トップページ > 過去ログ > 記事閲覧
LoadDivGraph+DrawPolygon3D
名前:F 日時: 2007/11/24 13:41

RPGやアクションでプレイヤー用のテクスチャ「横16*縦32が縦横ともに3つ並んだ画像」を地形の高さごとに大きさ変えるために LoadDivGraphとDrawPolygon3Dを使いたいと思いましたが、 分割された画像をDrawPolygon3Dで使うと、分割されていない全体が表示されてしまいます。 環境はXP VC6.0です #include <DxLib.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ) { /*ウィンドウズモード*/ ChangeWindowMode(TRUE); /*解像度*/ SetGraphMode(320,240,16); /*拡大 2倍*/ SetWindowSizeExtendRate(2.0); if( DxLib_Init() == -1 ) return -1; SetDrawScreen( DX_SCREEN_BACK ); int graph[9]; int ret = LoadDivGraph("player1_walk.bmp",9,3,3,16,32,graph); while(CheckHitKey( KEY_INPUT_ESCAPE ) == 0) { if( ProcessMessage() == -1) break; VERTEX_3D Vertex[6]; /*(0,0)に16*32サイズを表示*/ /*左上*/ Vertex[0].pos.x = 0.0F; Vertex[0].pos.y = 240;Vertex[0].pos.z = 20.F; Vertex[0].u = 0.0F; Vertex[0].v = 0.0F; /*右上*/ Vertex[1].pos.x = 16.0F; Vertex[1].pos.y = 240;Vertex[1].pos.z = 20.F; Vertex[1].u = 1.0F ; Vertex[1].v = 0.0F ; Vertex[3] = Vertex[1]; /*左下*/ Vertex[2].pos.x = 0.0F; Vertex[2].pos.y = 208;Vertex[2].pos.z = 20.F; Vertex[2].u = 0.0F; Vertex[2].v = 1.0F; Vertex[4] = Vertex[2]; /*右下*/ Vertex[5].pos.x = 16.0F; Vertex[5].pos.y = 208;Vertex[5].pos.z = 20.F; Vertex[5].u = 1.0F ; Vertex[5].v = 1.0F ; Vertex[0].r = Vertex[1].r = Vertex[2].r = Vertex[3].r = Vertex[4].r = Vertex[5].r = 255; Vertex[0].g = Vertex[1].g = Vertex[2].g = Vertex[3].g = Vertex[4].g = Vertex[5].g = 255; Vertex[0].b = Vertex[1].b = Vertex[2].b = Vertex[3].b = Vertex[4].b = Vertex[5].b = 255; Vertex[0].a = Vertex[1].a = Vertex[2].a = Vertex[3].a = Vertex[4].a = Vertex[5].a = 255; DrawPolygon3D(Vertex,2,graph[3],TRUE); ScreenFlip(); } DxLib_End(); return 0; } よろしくお願いします

Page: 1 |

Re: LoadDivGraph+DrawPolygon3D ( No.1 )
名前:管理人 日時:2007/12/03 01:58

 申し訳ありません、リファレンスに記載しておくのを忘れていましたが、 DrawPolygon3D では LoadDivGraph で分割読み込みした画像や DerivationGraph で 他の画像から抜き出した画像ハンドルを使用した場合、正常に描画することが出来ません。  なので、もし複数のチップが描かれた画像を使用して描画する場合は VERTEX_3D の u, v を使って描画するチップを変更するようにしてみてください。  また、DrawPolygon3D 関数は一回一回の呼び出しが重いですので、もし大きさを 変えるだけでしたら DrawExtendGraph 関数をお使いになった方が速度的に有利です。 (LoadDivGraph 関数で読み込んだ分割画像も使えますし・・・)
Re: LoadDivGraph+DrawPolygon3D ( No.2 )
名前:F 日時:2007/12/03 10:42

なるほどu,vを使うのですか、ありがとうございます

Page: 1 |