Dxライブラリ

14 views
Skip to first unread message

ちび

unread,
Jan 10, 2012, 12:25:15 PM1/10/12
to なでしこ ゲーム開発研究所
一応、DXライブラリをなでしこで取り込むことが出来ました

http://dxlib.o.oo7.jp/DxLib/DxLibDotNet3_06e.zip の中のDXLIB.DLLなどを使います

ソースは以下でいいと思います

●DxLib_Init()=DLL("DxLib.dll","int dx_DxLib_Init(void)")
●DxLib_End()=DLL("DxLib.dll","int dx_DxLib_Init(void)")
●ChangeWindowMode(Flag)=DLL("DxLib.dll","int dx_ChangeWindowMode(int
Flag)")
もし、DxLib_Init()=-1ならば
終わる
ChangeWindowMode(TRUE)
DxLib_End()

よろしくお願いします

Tatumakigen

unread,
Jan 10, 2012, 1:08:14 PM1/10/12
to Tatumak...@googlegroups.com
DLLだけで自己完結できましたか。
私がDxLibを使い始めてからはCでしか使っていなかったので、ほとんど試していませんでした。
こんなに簡単に使えるものなんですね。

見たところプロシージャも全てライブラリ側が管理しているため、こちらからは関数を呼び出す程度の負荷で済んでいるようです。

適当にテストしてみたところ、アルファチャンネル有りで、75x75のpng画像3000回で約6ミリ秒。
一回辺り2μ秒ですね。
とんでもない速さです。
GDIを使っていた時は数枚で1msec超えたので、これならなでしこでもゲームが作れるかもしれません。


一応必要最低限の実働サンプルを上げておきます。
即席で申し訳ないですが、参考になれば幸いです。


NadesikoDxLib_Sample00.zip

ちび

unread,
Jan 11, 2012, 8:59:11 AM1/11/12
to なでしこ ゲーム開発研究所
DxLib_Init関数なしでも大丈夫なんですね…

DXLIBの関数群を使うとウィンドウが応答なしになったりするみたいですが

ひとまずこれでいけそうですね

ちび

unread,
Jan 14, 2012, 10:45:27 AM1/14/12
to Tatumak...@googlegroups.com
現在なでしこ側でDXライブラリの関数を取り込み中なのですが、
dx_DrawStringなどいろいろな関数が取り込むのにうまくいってません

dx_DrawStringは文字列描画関数のためなでしこ側の関数でもよいと思うのですが、どうにも描画速度が気になります

Tatumakigen

unread,
Jan 23, 2012, 11:05:14 AM1/23/12
to Tatumak...@googlegroups.com
●DrawString(x,y,String,Color) =DLL("DxLib.dll","int dx_DrawString( int x , int y , char *String , int Color ) ;")

DrawString(10,10,`テスト`,RGB(255,0,0))

で、正常に描画できていますよ。
ただ、やはり裏画面と表画面の消去等は正しい挙動はしていないですね。

あと、Cには引数を省略する記法があるのですが、なでしこには存在しません。
その辺の関数をどうするか という問題が残ります。

以下はその例です。

●GraphFilter(GrHandle,FilterType,...) =DLL("DxLib.dll","int dx_GraphFilter( int GrHandle, int FilterType, ... ) ;")
●GraphFilterBlt(SrcGrHandle,DestGrHandle,FilterType,...) =DLL("DxLib.dll","int dx_GraphFilterBlt( int SrcGrHandle, int DestGrHandle, int FilterType, ... ) ;")
●GraphFilterRectBlt(SrcGrHandle,DestGrHandle,SrcX1,SrcY1,SrcX2,SrcY2,DestX,DestY,FilterType,...) =DLL("DxLib.dll","int dx_GraphFilterRectBlt( int SrcGrHandle, int DestGrHandle, int SrcX1, int SrcY1, int SrcX2, int SrcY2, int DestX, int DestY, int FilterType, ... ) ;")
●GraphBlend(GrHandle,BlendGrHandle,BlendRatio,BlendType,...) =DLL("DxLib.dll","int dx_GraphBlend( int GrHandle, int BlendGrHandle, int BlendRatio, int BlendType, ... ) ;")
●GraphBlendBlt(SrcGrHandle,BlendGrHandle,DestGrHandle,BlendRatio,BlendType,...) =DLL("DxLib.dll","int dx_GraphBlendBlt( int SrcGrHandle, int BlendGrHandle, int DestGrHandle, int BlendRatio, int BlendType, ... ) ;")
●GraphBlendRectBlt(SrcGrHandle,BlendGrHandle,DestGrHandle,SrcX1,SrcY1,SrcX2,SrcY2,BlendX,BlendY,DestX,DestY,BlendRatio,BlendType,...) =DLL("DxLib.dll","int dx_GraphBlendRectBlt( int SrcGrHandle, int BlendGrHandle, int DestGrHandle, int SrcX1, int SrcY1, int SrcX2, int SrcY2, int BlendX, int BlendY, int DestX, int DestY, int BlendRatio, int BlendType, ... ) ;")


Reply all
Reply to author
Forward
0 new messages