前提・実現したいこと
c++ Dxライブラリを使用して3Dゲームを製作しようと考えています。DrawPolygon3Dを利用し、三角形ポリゴン2つに画像(1024*1024)を貼り付けることで3D描画を行おうと検討しています。
発生している問題・エラーメッセージ
メモリに読み込んだ画像が表示されるのではなく、白い平面が表示される。
該当のソースコード
c++
1//---------Functions.cpp----------- 2#include <DxLib.h> 3#include <stdio.h> 4#include <math.h> 5#include "Main.h" 6#include "Game.h" 7 8double ds(double deg) { return sin(deg*0.0174533); } 9double dc(double deg) { return cos(deg*0.0174533); } 10void Draw3d(double x, double y, double z, double xang, double sx, double sy, int img) { 11 VERTEX_3D Vertex[6]; 12 int sizex, sizey; GetGraphSize(img, &sizex, &sizey); 13 { 14 Vertex[0].pos.x = Vertex[2].pos.x = Vertex[4].pos.x = x - sx / 2; 15 Vertex[1].pos.x = Vertex[3].pos.x = Vertex[5].pos.x = x + sx / 2; 16 Vertex[0].pos.y = Vertex[1].pos.y = Vertex[5].pos.y = y + sy * ds(xang); 17 Vertex[2].pos.y = Vertex[3].pos.y = Vertex[4].pos.y = y - sy * ds(xang); 18 Vertex[0].pos.z = Vertex[1].pos.z = Vertex[5].pos.z = z + sy * dc(xang); 19 Vertex[2].pos.z = Vertex[3].pos.z = Vertex[4].pos.z = z - sy * dc(xang); 20 Vertex[0].u = Vertex[2].u = Vertex[4].u = 0.0; 21 Vertex[1].u = Vertex[3].u = Vertex[5].u = sx / sizex; 22 Vertex[0].u = Vertex[1].u = Vertex[5].u = 0.0; 23 Vertex[2].u = Vertex[3].u = Vertex[4].u = sy / sizey; 24 } 25 for (int i = 0; i < 6; i++) { Vertex[i].r = Vertex[i].g = Vertex[i].b = Vertex[i].a = 255; } 26 DrawPolygon3D(Vertex, 2, img, FALSE); 27} 28 29//---------Game.cpp---------- 30#include <DxLib.h> 31#include <stdio.h> 32#include <math.h> 33#include "Main.h" 34#include "Functions.h" 35#include "Game.h" 36 37tile01 = LoadGraph("dat/stg1/tile01.png"); 38 39//^^^^Game()は毎frameごとに実行^^^^ 40void Game() { 41 InputKey(); 42 ClearDrawScreen();//裏画面消す 43 SetDrawScreen(DX_SCREEN_BACK);//描画先を裏画面に 44 Draw3d(0.0, 0.0, 512.0, 0.0, 640.0, 512.0, tile01); 45 //~~~~~~その他2D描画等の処理~~~~~~~ 46 ScreenFlip();//裏画面を表画面にコピー 47}
試したこと
2D描画では正常に画像が表示され、画像の読み込みは正常に処理されていると考えられます。
また該当の画像をフォルダから除去した場合白い平面は表示されなくなります。
別のmqoファイル(3Dモデルデータ)の平面に張り付けてモデルデータとしての描画も試しましたが同様に白い平面のみが表示されました。
回答1件
あなたの回答
tips
プレビュー