質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

1回答

3210閲覧

Dxライブラリ DrawPolygon3Dを利用した3D描画の際、画像でなく白い平面が表示される

ae4hfraptbe

総合スコア8

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2018/08/10 10:03

編集2018/08/10 14:32

前提・実現したいこと

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モデルデータ)の平面に張り付けてモデルデータとしての描画も試しましたが同様に白い平面のみが表示されました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ae4hfraptbe

2018/08/11 04:19

VERTEX_3D は旧型のようです。
guest

回答1

0

自己解決

Vertex[].vを設定するところで誤って.uに代入していました。
初歩的なミスで申し訳ありません。

投稿2018/08/11 04:21

ae4hfraptbe

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問