前提・実現したいこと
openGLで開発していたのですが、何か消してしまったのか、突然描画されなくなってしまいました。
何度もトレースして原因を探していましたが、初心者ですのでわからず進みません。
もしよろしければどなたか原因を教えていただけると幸いです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
#include <stdlib.h>
#include <GL/glut.h>
#include <math.h>
#define KEY_ESC 27
GLfloat lightPos[] = { 0.992157, 0.941176, 0.807843, 1.0 };
GLfloat lightDif[] = { 0.780392, 0.568627, 0.113725, 1.0 };
GLfloat lightAmb[] = { 0.329412, 0.223529, 0.027451, 1.0 };
double theta = 0.0;
void myKeyboard(unsigned char key, int x, int y) {
if (key == KEY_ESC)
exit(0);
}
//床を描く
void myfloor() {
int i;
glColor3d(1.0, 1.0, 1.0); glBegin(GL_LINES); for (i = -15; i < 16; i += 2) { glVertex3i(i, 0, -15); glVertex3i(i, 0, 15); glVertex3i(-15, 0, i); glVertex3i(15, 0, i); } glEnd();
}
//描画関数
void display() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); glLoadIdentity(); //床を描く関数の呼び出し myfloor(); glEnable(GL_DEPTH_TEST); glPushMatrix(); glEnable(GL_LIGHTING); glTranslated(0.0, 0.0, -3.0); glRotatef(90.0, 0, 0.0, 0.0); glColor3d(1.0, 0.0, 0.0); glutSolidCone(0.8, 2.0, 40, 20); glDisable(GL_LIGHTING); glColor3d(1.0, 1.0, 1.0); glTranslated(0.0, 0.0, -3.0); glutSolidTorus(0.3, 0.6, 30, 30); glColor3d(1.0, 1.0, 1.0); glTranslated(0.0, 0.0, -0.4); glutSolidTorus(0.25, 0.5, 25, 25); glColor3d(1.0, 1.0, 1.0); glTranslated(0.0, 0.0, -0.4); glutSolidTorus(0.2, 0.4, 20, 20); glColor3d(1.0, 1.0, 1.0); glTranslated(0.0, 0.0, -0.3); glutSolidTorus(0.15, 0.3, 15, 15); glPopMatrix(); glDisable(GL_DEPTH_TEST); glutSwapBuffers();
}
//idle関数
void idle() {
theta = fmod(theta + 0.5, 360.0);
glutPostRedisplay();
}
//初期化
void myInit(char* progname) {
int width = 500, height = 500;
double aspect = (double)width / (double)height;
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH); glutInitWindowSize(width, height); glutInitWindowPosition(0, 0); glutCreateWindow(progname); glClearColor(0.0, 0.0, 0.0, 1.0); glutKeyboardFunc(myKeyboard); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0, aspect, 1.0, 20.0); //視点変更(少し上から,オブジェクトの位置を見る) gluLookAt(0.0, 1.0, 2.0, 0.0, 0.0, -5.0, 0.0, 1.0, 0.0); glLightfv(GL_LIGHT0, GL_POSITION, lightPos); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightDif); glLightfv(GL_LIGHT0, GL_AMBIENT, lightAmb); glEnable(GL_LIGHT0);
}
//メイン
int main(int argc, char* argv[]) {
glutInit(&argc, argv);
myInit(argv[0]);
glutDisplayFunc(display);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。