OpenGLで3Dモデルが表示されない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
akindo
記事: 14
登録日時: 10年前

OpenGLで3Dモデルが表示されない

#1

投稿記事 by akindo » 9年前

OpenGLで3Dを表示するプログラムを書いているのですが、何故か表示されません。

ソースコードは下記のとおりです。下のリンク先を参考にしました。
"xfile.h"は下のリンク先のソースを一切改変せずに使用しました。


http://marina.sys.wakayama-u.ac.jp/~tokoi/GLFW.pdf
http://nn-hokuson.hatenablog.com/entry/ ... /19/145029
http://www21.atwiki.jp/opengl/pages/91.html


表示する3DモデルはSwordBoutのプレイヤーの3Dをmv1からxに変換して
使用しています。

http://dxlib.o.oo7.jp/SwordBout/

コード:

#define GLFW_INCLUDE_GLU
#include  <cstdlib>
#include  <iostream>
#include  <GL/glew.h>
#include  <GLFW/glfw3.h>

#include "xfile.h"
#pragma comment(lib, "glu32.lib")

float angle = 0.5f;
MODEL* model;
#define WIDTH 640
#define HEIGHT 480


int	main(void)
{

	//	GLFWを初期化する
	if (glfwInit() == GL_FALSE)
	{
		//	初期化に失敗した
		std::cerr << "Can't	initialize	GLFW" << std::endl;
		return	1;
	}

	//プログラム終了時の処理を登録する
	
	atexit(glfwTerminate);


	//	ウィンドウを作成する
	GLFWwindow	*const	window(glfwCreateWindow(640, 480, "Hello!", NULL, NULL));
	if (window == NULL)
	{
		//ウィンドウが作成できなかった
		std::cerr << "Can't create	GLFW window." << std::endl;
		glfwTerminate();
		return	1;
	}
	//作成したウィンドウをOpenGLの処理対象にする
	glfwMakeContextCurrent(window);

	//	GLEWを初期化する
	glewExperimental = GL_TRUE;
	if (glewInit() != GLEW_OK)
	{
		//	GLEWの初期化に失敗した
		std::cerr << "Can't	initialize	GLEW" << std::endl;
		return 1;
	}

	
	//背景色を指定する
	glClearColor(0.0f, 0.0f, 0.0f, 0.5f);

	// モニタとの同期
	glfwSwapInterval(1);

	// 描画範囲の指定
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnable(GL_DEPTH_TEST);
	glEnable(GL_LIGHT0);
	glEnable(GL_LIGHTING);
	glEnable(GL_CULL_FACE);
	glCullFace(GL_BACK);
	model = new MODEL("pc.x", 100);

	//ウィンドウが開いている間繰り返す
	while (glfwWindowShouldClose(window) == GL_FALSE)
	{

		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		//glClearColor(0.2f, 0.2f, 0.2f, 0.0f);
		//
		//ここで描画処理を行う
		//

		glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
		glViewport(0, 0, WIDTH, HEIGHT);
		glMatrixMode(GL_PROJECTION);
		glLoadIdentity();
		gluPerspective(30.0, WIDTH / HEIGHT, 0.1, 2000.0);
		glMatrixMode(GL_MODELVIEW);
		glLoadIdentity();
		gluLookAt(0.0, 500.0, 500.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);

		glRotatef(angle, 1.0f, 0.0f, 0.0f);//回転
		glRotatef(angle, 0.0f, 1.0f, 0.0f);//回転

		model->Draw();
		
		//イベントを取り出す
		glfwWaitEvents();

		glfwSwapBuffers(window);
	}
	glfwTerminate();

	return 0;
}

hide

Re: OpenGLで3Dモデルが表示されない

#2

投稿記事 by hide » 9年前

※私はコード実行してないですし、読んでもいないです。
表示する3DモデルはSwordBoutのプレイヤーの3Dをmv1からxに変換して
使用しています。
正しく変換されていて正しく表示される保証はあるものですか?

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: OpenGLで3Dモデルが表示されない

#3

投稿記事 by ISLe » 9年前

xファイル関連では
そのままのスケールだと小さすぎて見えない
というのがよくあることだったような気がします。

akindo
記事: 14
登録日時: 10年前

Re: OpenGLで3Dモデルが表示されない

#4

投稿記事 by akindo » 9年前

2ヶ月も返信が遅れて申し訳ありません。

どうやらテクスチャの設定が悪かったようで、テクスチャをtgaからpngへ変えたら表示されました。

有難うございました。

閉鎖

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