DrawPolygon3Dを利用したDraw3d関数を定義し、三角形ポリゴン2つに画像(1024*1024)を貼り付けることで3D描画を行おうと検討しています。
しかしメモリに読み込んだ画像が表示されるのではなく、白い平面が表示されるという現象に陥っています。
以下のソースにおける問題点等があれば教えていただけると非常にありがたいです。
tile01 = LoadGraph("dat/tile01.png");
double ds(double deg) { return sin(deg*0.0174533); }
double dc(double deg) { return cos(deg*0.0174533); }
void Draw3d(double x, double y, double z, double xang, double sx, double sy, int img) {
VERTEX_3D Vertex[6];
int sizex, sizey; GetGraphSize(img, &sizex, &sizey);
{
Vertex[0].pos.x = Vertex[2].pos.x = Vertex[4].pos.x = x - sx / 2;
Vertex[1].pos.x = Vertex[3].pos.x = Vertex[5].pos.x = x + sx / 2;
Vertex[0].pos.y = Vertex[1].pos.y = Vertex[5].pos.y = y + sy * ds(xang);
Vertex[2].pos.y = Vertex[3].pos.y = Vertex[4].pos.y = y - sy * ds(xang);
Vertex[0].pos.z = Vertex[1].pos.z = Vertex[5].pos.z = z + sy * dc(xang);
Vertex[2].pos.z = Vertex[3].pos.z = Vertex[4].pos.z = z - sy * dc(xang);
Vertex[0].u = Vertex[2].u = Vertex[4].u = 0.0;
Vertex[1].u = Vertex[3].u = Vertex[5].u = sx / sizex;
Vertex[0].u = Vertex[1].u = Vertex[5].u = 0.0;
Vertex[2].u = Vertex[3].u = Vertex[4].u = sy / sizey;
}
for (int i = 0; i < 6; i++) { Vertex[i].r = Vertex[i].g = Vertex[i].b = Vertex[i].a = 255; }
DrawPolygon3D(Vertex, 2, img, FALSE);
}
// Game() は毎frame呼び出される関数
void Game() {
InputKey();
ClearDrawScreen();//裏画面消す
SetDrawScreen(DX_SCREEN_BACK);//描画先を裏画面に
Draw3d(0.0, 0.0, 512.0, 0.0, 640.0, 512.0, tile01);
//
//-----その他2D描画等の処理---------
//
ScreenFlip();//裏画面を表画面にコピー
}
2D描画では正常に画像が表示され、画像の読み込みは正常に処理されていると考えられます。また該当の画像をフォルダから除去した場合白い平面すら表示されなくなります。
代替案としてmqoファイル(3Dモデルデータ)の平面に画像を張り付けてモデルデータとしての描画も試しましたが同様に白い平面のみが表示されました。