Openglに関しての質問です。

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

Openglに関しての質問です。

#1

投稿記事 by puchimilk » 10年前

 Opengl勉強がまだ手探り状態のpuchimilkと申します。
 glutSolidSphereとGL_LINESで三色の線を同時に描画できるところまで書けたのですが、球体の方が真っ白な丸になってしまいました。ライトをオンにして球体に立体感を出したいのですが、ライトをオンにすると球体に立体感はでてGL_LINESの線の色がなくなってしまいます。どうしたら線の色をそのままに球体にライトを当てれるでしょうか。

コード:

#include <windows.h>
#include <stdlib.h>
#include "glut.h"

GLfloat eye[]={ 30.0, 15.0, 30.0 };

void init(void)
{
	glClearColor(0.3, 0.3, 0.3, 1.0);

	glPopMatrix();
}

void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glLoadIdentity();
	gluLookAt(eye[0], eye[1], eye[2], 0.0,0.0,0.0, 0.0,1.0,0.0);

	glEnable(GL_DEPTH_TEST);

	glutSolidSphere(2, 50, 50);

	glBegin(GL_LINES);
	glColor3f(1.0, 0.0, 0.0); //X
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(10.0, 0.0, 0.0);

	glColor3f(0.0, 1.0, 0.0); //Y
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.0, 10.0, 0.0);

	glColor3f(0.0, 0.0, 1.0); //z
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.0, 0.0, 10.0);
	glEnd();

	glFlush();
}

void Reshape(int w, int h)
{
	glViewport(0, 0, w, h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(10.0, (GLfloat)w/(GLfloat)h, 1.0, 100.0);

	glMatrixMode(GL_MODELVIEW);
}

void main(void)
{
	glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH);

	glutInitWindowPosition(0, 0);
	glutInitWindowSize(500, 500);
	glutCreateWindow("TitleString");
	init();
	glutReshapeFunc(Reshape);
	glutDisplayFunc(display);
	glutMainLoop();
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: Openglに関しての質問です。

#2

投稿記事 by みけCAT » 10年前

球体を描画するときはライトをONにして、線を描画するときはライトをOFFにする、というのでは駄目ですか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

puchimilk
記事: 20
登録日時: 11年前

Re: Openglに関しての質問です。

#3

投稿記事 by puchimilk » 10年前

同時に描画は無理なのでしょうか?

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: Openglに関しての質問です。

#4

投稿記事 by みけCAT » 10年前

puchimilk さんが書きました:同時に描画は無理なのでしょうか?
「同時に描画」とはどういうことでしょうか?
マルチスレッドを使用するのでしょうか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

puchimilk
記事: 20
登録日時: 11年前

Re: Openglに関しての質問です。

#5

投稿記事 by puchimilk » 10年前

球体を描画するときにライトをオンにして、線を描画するときにオフにするというのはこういうことでしょうか。

コード:

#include <windows.h>
#include <stdlib.h>
#include "glut.h"

GLfloat eye[]={ 30.0, 15.0, 30.0 };

void init(void)
{
	glClearColor(0.3, 0.3, 0.3, 1.0);
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
}

void display(void)
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

	glLoadIdentity();
	gluLookAt(eye[0], eye[1], eye[2], 0.0,0.0,0.0, 0.0,1.0,0.0);

	glEnable(GL_DEPTH_TEST);

	glutSolidSphere(2, 50, 50);
	glEnd();

	glDisable(GL_LIGHTING);
	glBegin(GL_LINES);
	glColor3f(1.0, 0.0, 0.0); //X
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(10.0, 0.0, 0.0);

	glColor3f(0.0, 1.0, 0.0); //Y
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.0, 10.0, 0.0);

	glColor3f(0.0, 0.0, 1.0); //z
	glVertex3f(0.0, 0.0, 0.0);
	glVertex3f(0.0, 0.0, 10.0);
	glEnd();

	glFlush();
}

void Reshape(int w, int h)
{
	glViewport(0, 0, w, h);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
	gluPerspective(10.0, (GLfloat)w/(GLfloat)h, 1.0, 100.0);

	glMatrixMode(GL_MODELVIEW);
}

void main(void)
{
	glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH);

	glutInitWindowPosition(0, 0);
	glutInitWindowSize(500, 500);
	glutCreateWindow("TitleString");
	init();
	glutReshapeFunc(Reshape);
	glutDisplayFunc(display);
	glutMainLoop();
}

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: Openglに関しての質問です。

#6

投稿記事 by みけCAT » 10年前

puchimilk さんが書きました:球体を描画するときにライトをオンにして、線を描画するときにオフにするというのはこういうことでしょうか。
はい。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

puchimilk
記事: 20
登録日時: 11年前

Re: Openglに関しての質問です。

#7

投稿記事 by puchimilk » 10年前

思うようにいきましたありがとうございます。

閉鎖

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