トップページ > 過去ログ > 記事閲覧
テクスチャが貼れない
名前:ジュンヤ 日時: 2012/06/22 18:39

MakeScreenで描画可能な画面を作成し、 そのグラフィックハンドルでDrawPolygon3DやDrawPrimitive3Dなどで、 描画するときにテクスチャとして貼り付けたいのですが上手くいきません。 (ポリゴン自体は描画されているがテクスチャが貼れてない) DrawRotaGraphでは上手くいきます。 ゲームのエンディング時に今までのリプレイをポリゴンのテクスチャに貼り付けてグルグル回そうと思ってます。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int screen, i ; int angle = 0; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 描画可能画像の作成 screen = MakeScreen( 256, 256 ) ; // フォントのサイズを大きくする SetFontSize( 32 ) ; VERTEX3D Vertex[ 6 ] ; // 2ポリゴン分の頂点のデータをセット Vertex[ 0 ].pos = VGet( 100.0f, 100.0f, 0.0f ) ; Vertex[ 0 ].norm = VGet( 0.0f, 0.0f, -1.0f ) ; Vertex[ 0 ].dif = GetColorU8( 255,255,255,255 ) ; Vertex[ 0 ].spc = GetColorU8( 255,255,255,255 ) ; Vertex[ 0 ].u = 0.0f ; Vertex[ 0 ].v = 0.0f ; Vertex[ 0 ].su = 0.0f ; Vertex[ 0 ].sv = 0.0f ; Vertex[ 1 ].pos = VGet( 250.0f, 100.0f, 0.0f ) ; Vertex[ 1 ].norm = VGet( 0.0f, 0.0f, -1.0f ) ; Vertex[ 1 ].dif = GetColorU8( 255,255,255,255 ) ; Vertex[ 1 ].spc = GetColorU8( 255,255,255,255 ) ; Vertex[ 1 ].u = 0.0f ; Vertex[ 1 ].v = 0.0f ; Vertex[ 1 ].su = 0.0f ; Vertex[ 1 ].sv = 0.0f ; Vertex[ 2 ].pos = VGet( 100.0f, 300.0f, 0.0f ) ; Vertex[ 2 ].norm = VGet( 0.0f, 0.0f, -1.0f ) ; Vertex[ 2 ].dif = GetColorU8( 255,255,255,255 ) ; Vertex[ 2 ].spc = GetColorU8( 255,255,255,255 ) ; Vertex[ 2 ].u = 0.0f ; Vertex[ 2 ].v = 0.0f ; Vertex[ 2 ].su = 0.0f ; Vertex[ 2 ].sv = 0.0f ; Vertex[ 3 ].pos = VGet( 100.0f, 300.0f, 0.0f ) ; Vertex[ 3 ].norm = VGet( 0.0f, 0.0f, -1.0f ) ; Vertex[ 3 ].dif = GetColorU8( 255,255,255,255 ) ; Vertex[ 3 ].spc = GetColorU8( 255,255,255,255 ) ; Vertex[ 3 ].u = 0.0f ; Vertex[ 3 ].v = 0.0f ; Vertex[ 3 ].su = 0.0f ; Vertex[ 3 ].sv = 0.0f ; Vertex[ 4 ].pos = VGet( 250.0f, 300.0f, 0.0f ) ; Vertex[ 4 ].norm = VGet( 0.0f, 0.0f, -1.0f ) ; Vertex[ 4 ].dif = GetColorU8( 255,255,255,255 ) ; Vertex[ 4 ].spc = GetColorU8( 255,255,255,255 ) ; Vertex[ 4 ].u = 0.0f ; Vertex[ 4 ].v = 0.0f ; Vertex[ 4 ].su = 0.0f ; Vertex[ 4 ].sv = 0.0f ; Vertex[ 5 ].pos = VGet( 250.0f, 100.0f, 0.0f ) ; Vertex[ 5 ].norm = VGet( 0.0f, 0.0f, -1.0f ) ; Vertex[ 5 ].dif = GetColorU8( 255,255,255,255 ) ; Vertex[ 5 ].spc = GetColorU8( 255,255,255,255 ) ; Vertex[ 5 ].u = 0.0f ; Vertex[ 5 ].v = 0.0f ; Vertex[ 5 ].su = 0.0f ; Vertex[ 5 ].sv = 0.0f ; // メインループ(何かキーが押されたらループを抜ける) while( ProcessMessage() == 0 && CheckHitKeyAll() == 0 ) { // 描画先を描画可能画像にする SetDrawScreen( screen ) ; // 画面のクリア ClearDrawScreen(); // 文字列の描画 for( i = 0 ; i < 4 ; i ++ ) DrawString( 0, i * 32, "Test String", GetColor( 255,0,0 ) ) ; // 裏画面左上に描画可能画像を描画する SetDrawScreen( DX_SCREEN_BACK ) ; // 画面のクリア ClearDrawScreen(); DrawRotaGraph( 640/2, 480/2, 1.0, angle*3.14/180, screen, TRUE ); // どちらも上手くいかない // DrawPolygon3D( Vertex, 2, screen , TRUE ) ; // DrawPrimitive3D( Vertex, sizeof( Vertex ) / sizeof( Vertex[0] ), DX_PRIMTYPE_TRIANGLELIST, screen , TRUE ); angle++; // 裏画面の内容を表画面に反映 ScreenFlip(); } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; }

Page: 1 |

Re: テクスチャが貼れない ( No.1 )
名前:いっち 日時:2012/06/22 19:30

UV座標がすべて 0.0 だからだとおもいます。
Re: テクスチャが貼れない ( No.2 )
名前:ジュンヤ 日時:2012/06/22 19:36

uv座標を調整して、DrawPrimitive3DにDX_PRIMTYPE_TRIANGLESTRIPを指定してしたら、 上手くできました。 いっちさんありがとうございました。

Page: 1 |