3Dポリゴンが表示されない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
チルチル

3Dポリゴンが表示されない

#1

投稿記事 by チルチル » 16年前

3Dポリゴンを描画しようと思ったのですが
なぜか表示されません・・
一応コードを添付しますが
本家リファレンスをコピーしただけです
何か原因に心当たりはないでしょうか?
#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
			 LPSTR lpCmdLine, int nCmdShow )
{
	int GrHandle ;
	float Z, ZAdd ; 
	VERTEX_3D Vertex[6] ;	// ポリゴン2枚なので、頂点は6個

	// DXライブラリ初期化処理
	if( DxLib_Init() == -1 )	
		 return -1 ;	// エラーが起きたら直ちに終了

	// 描画先を裏画面にする
	SetDrawScreen( DX_SCREEN_BACK ) ;

	// テクスチャの読み込み
	GrHandle = LoadGraph( "TestTex1.jpg" ) ;

	// Z値の初期化
	Z = 0.0F ;

	// Z値の加算値を初期化(最初は近づける)
	ZAdd = -1.0F ;

	// 何かキーが押されるまでループ
	while( CheckHitKeyAll() == 0 )
	{
		// メッセージ処理
		if( ProcessMessage() != 0 ) break ;

		// 画面の初期化
		ClearDrawScreen() ;

		// Z値の処理
		Z += ZAdd ;

		// 一定のラインを越えていたら進行方向を反転する
		if( Z < -300.0F || Z > 300.0F ) ZAdd = -ZAdd ;

		// 頂点情報のセット
		{
			// 画面の中央に幅・高さ100で描画
			Vertex[0].pos.x = 320.0F - 50.0F ;	Vertex[0].pos.y = 240.0F + 50.0F ;	Vertex[0].pos.z = Z ;
			Vertex[0].u = 0.0F ;
			Vertex[0].v = 0.0F ;

			Vertex[1].pos.x = 320.0F + 50.0F ;	Vertex[1].pos.y = 240.0F + 50.0F ;	Vertex[1].pos.z = Z ;
			Vertex[1].u = 1.0F ;
			Vertex[1].v = 0.0F ;
	
			Vertex[2].pos.x = 320.0F - 50.0F ;	Vertex[2].pos.y = 240.0F - 50.0F ;	Vertex[2].pos.z = Z ;
			Vertex[2].u = 0.0F ;
			Vertex[2].v = 1.0F ;

			Vertex[3].pos.x = 320.0F + 50.0F ;	Vertex[3].pos.y = 240.0F - 50.0F ;	Vertex[3].pos.z = Z ;
			Vertex[3].u = 1.0F ;
			Vertex[3].v = 1.0F ;

			Vertex[4].pos.x = 320.0F - 50.0F ;	Vertex[4].pos.y = 240.0F - 50.0F ;	Vertex[4].pos.z = Z ;
			Vertex[4].u = 0.0F ;
			Vertex[4].v = 1.0F ;

			Vertex[5].pos.x = 320.0F + 50.0F ;	Vertex[5].pos.y = 240.0F + 50.0F ;	Vertex[5].pos.z = Z ;
			Vertex[5].u = 1.0F ;
			Vertex[5].v = 0.0F ;

			// 輝度は全要素100%
			Vertex[0].r = Vertex[0].g = Vertex[0].b = 255 ;
			Vertex[1].r = Vertex[1].g = Vertex[1].b = 255 ;
			Vertex[2].r = Vertex[2].g = Vertex[2].b = 255 ;
			Vertex[3].r = Vertex[3].g = Vertex[3].b = 255 ;
			Vertex[4].r = Vertex[4].g = Vertex[4].b = 255 ;
			Vertex[5].r = Vertex[5].g = Vertex[5].b = 255 ;

			// a も最大値
			Vertex[0].a = 255 ;
			Vertex[1].a = 255 ;
			Vertex[2].a = 255 ;
			Vertex[3].a = 255 ;
			Vertex[4].a = 255 ;
			Vertex[5].a = 255 ;
		}

		// ポリゴンを透過色無しで2枚描画
		DrawPolygon3D( Vertex, 2, GrHandle, FALSE ) ;

		// 裏画面の内容を表画面に反映
		ScreenFlip() ;
	}

	// DXライブラリ使用の終了処理
	DxLib_End() ;

	// ソフトの終了
	return 0 ;
}

yu

Re:3Dポリゴンが表示されない

#2

投稿記事 by yu » 16年前

TestTex1.jpg は正常にロードできていますか?

チルチル

Re:3Dポリゴンが表示されない

#3

投稿記事 by チルチル » 16年前

できているようです

yu

Re:3Dポリゴンが表示されない

#4

投稿記事 by yu » 16年前

過去にこのプログラムを試しましたが正常に動作しました。

すみませんが、何が原因なのか私ではわかりません;

yu

Re:3Dポリゴンが表示されない

#5

投稿記事 by yu » 16年前

今試したところ
自分も同じようなことが起こりました。

真中に消失点があると描画されない?・・・

以下の3行をDrawPolygon3D関数の上に書くと自分の方では描画されました。
MATRIX Matrix;
CreateViewportMatrix(&Matrix , 320.0F , 240.0F + 1.0F , 640.0F , 480.0F);
SetTransformToViewport(&Matrix);

チルチル

Re:3Dポリゴンが表示されない

#6

投稿記事 by チルチル » 16年前

DrawPolygon3D関数の上に処理を加えてみると確かに描画されました

どうもありがとうございます

しかし、描画されない→真中に消失点があるから?
という考えに行きつくのがすごいですね・・

とりあえず問題は解決しましたが
原因がよくわからないので
もう少し解決にはしないでおきます

yu

Re:3Dポリゴンが表示されない

#7

投稿記事 by yu » 16年前

以前のバージョンでは指定しなくても描画されたので
最新のDXライブラリの問題でしょうか・・・

あちらの掲示板で質問されたほうがよろしいかもしれません;

チルチル

Re:3Dポリゴンが表示されない

#8

投稿記事 by チルチル » 16年前

そういえば最近ヘッダファイルを更新したような・・

ちなみにあちらってどこですか?

あとSetUseZBufferFlagを有効にすると描画されなくなるんですが・・


チルチル

Re:3Dポリゴンが表示されない

#10

投稿記事 by チルチル » 16年前

あ~なるほど本家の掲示板ですか
下の方に小さく表示されていたので気付きませんでした・・

あとx,y,zの値を大きくしすぎると正常に描画されないという問題も発生しました・・

yu

Re:3Dポリゴンが表示されない

#11

投稿記事 by yu » 16年前

>ちなみにあちらってどこですか?

Mist様が貼ってくださったURL先です。
って、もう質問されてましたねw


>あとSetUseZBufferFlagを有効にすると描画されなくなるんですが・・

ZBufferは使ったことが無いです。orz

ですが、確かにUseFlagとWriteFlagを立てても描画されませんでした。
しかし比較モードを変更すると描画されました。
描画はされました。
が、どの比較モードにしてもZ値が小さい値(カメラとの距離)ものを先に描画させることができませんでした;

使い方が悪いのでしょうか。orz
それとDrawFormatStringで描画していた文字が消えたりしました;


>あとx,y,zの値を大きくしすぎると正常に描画されないという問題も発生しました・・

これはかなり前から気になっていました。一部が欠けるように描画されるんですよね・・・
大きくなりすぎる前に描画しないようにすれば対処できました。

チルチル

Re:3Dポリゴンが表示されない

#12

投稿記事 by チルチル » 16年前

う~んこれは厄介な問題ですね・・

チルチル

Re:3Dポリゴンが表示されない

#13

投稿記事 by チルチル » 16年前

やっぱり大きく描画しないといけない時もありますからね・・
何か方法はないものか・・

チルチル

Re:3Dポリゴンが表示されない

#14

投稿記事 by チルチル » 16年前

本家の掲示板でヘッダファイルを最新の物に更新したらポリゴンが表示されなくなりました・・

yu

Re:3Dポリゴンが表示されない

#15

投稿記事 by yu » 16年前

私の場合だけかもしれませんが、
消失点が中心にあっても描画されるようになりました。

ですが、ZBufferの問題は変わりません・・・

チルチル

Re:3Dポリゴンが表示されない

#16

投稿記事 by チルチル » 16年前

って事はやはりヘッダファイルのバージョンが関係していると言う事か・・?
最新版にするとX,Y,Zの最大値が低くなって今まで表示されていたポリゴンが表示されないようです・・

チルチル

Re:3Dポリゴンが表示されない

#17

投稿記事 by チルチル » 16年前

小さいポリゴンに分ければ描画できるのですが・・

チルチル

Re:3Dポリゴンが表示されない

#18

投稿記事 by チルチル » 16年前

そもそもポリゴンの大きさと消失距離は関係するんでしょうか・・

閉鎖

“C言語何でも質問掲示板” へ戻る