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;
}