• 締切済み

openglをVC++2010で利用したいです。

VisualC++2010でopenglのプログラムを利用しているものです。 openglのインストールを完了し、プログラムにエラーもなくコンパイル、実行したのですが、図形が描画されるところが真っ黒のまま何も表示されません。 視点の問題かと思い、gluPerspectiveをいじったりしても何も表示されず、 プログラムのミスかと思いネット上のプログラムをコピペしても何も表示されません。 原因をいろいろネットで調べたのですが、なかなか解決に至りません。 使ってるPCはdynabookR542/16FS PR54216FNTS osはWindows7の64bitです。 よろしくお願いします。

みんなの回答

回答No.3

自分(OpenGL超初心者)も同じ症状になりました。 以下のように2か所を変更してみて改善されませんでしょうか。 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA ); →glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA ); display関数の最後に glutSwapBuffers(); を挿入 なぜシングルバッファでうまくゆかないのかは分からないのですが。

  • qwertfk
  • ベストアンサー率67% (55/81)
回答No.2

念のための確認ですが、真っ黒というのはコンソールではないでしょうか。 No.1の補足に補足いただいたソースをVisualStudioで実行したところ、私の環境では ウィンドウが2つ表示され、1枚が黒(コンソール)もう1枚が赤(OpenGLのウィンドウ)で表示されます。 ちなみに、draw_triangleは、これでは視線と平行な三角形になり表示されません。 void draw_triangle(void) { glBegin(GL_TRIANGLES); glVertex3f(1.0, 0.0, 0.0); glVertex3f(0.0, -1.0, 0.0); glVertex3f(-1.0, 0.0, 0.0); glEnd(); } ではないでしょうか。

tobanaibuta
質問者

補足

返信遅くなりました。 回答ありがとうございます。 僕の場合も、ウィンドウが2つ表示されますが、2つとも画面内は真っ黒のままです。 draw関数の中身を変更しても特に変化が見られませんでした。 やはりなんらかの設定に問題があるのでしょうか?

  • qwertfk
  • ベストアンサー率67% (55/81)
回答No.1

ちょっとこの質問では情報が少なすぎます。 > ネット上のプログラムをコピペしても何も表示されません。 これはURL等は出せないでしょうか。 たとえば、基本的なチェック方法として、 ・glClearColorで背景色を変えてみる ・形状の描画を一度全て無効化する これで画面の色が変わればOpenGLはちゃんと動いています。 そうでなければ、何らかの事情でOpenGLが動いていません。 色が変わるようであれば、まさに書かれているとおり、 gluPerspectiveが正しくないなどのプログラムのミスがあります。 glDisable(GL_LIGHTING); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, (double)view_width/(double)view_height, 0.01 , 5 ); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt( 0.0 , 0.0 , 3.0 , 0.0 , 0.0 , 0.0 , 0.0 , 1.0 , 0.0 ); glColor3d(1,0,0); glutSolidTeapot(0.3); glutSwapBuffers(); たとえば、これをそのまま描画関数にした場合にティーポットが表示されないでしょうか。

tobanaibuta
質問者

補足

回答していただきありがとうございます。 まず、参考にしたプログラムですが、大学の講義で使用した三角形を表示する単純なプログラムです。 #include<windows.h> #include<GL/gl.h> #include<GL/glut.h> // // sample1-2.cpp // void init_gl_settings(void); void display(void); void draw_triangle(void); void main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA ); glutInitWindowSize(250, 250); glutInitWindowPosition(200, 200); glutCreateWindow("cube1.c"); init_gl_settings(); glutDisplayFunc(display); glutMainLoop(); } void init_gl_settings(void) { glClearColor(1.0, 0.0, 0.0, 0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0, 1.0, 2.0, 200.0); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0, 0.0, -6.0); glRotatef(0.0, 1.0, 0.0, 0.0); draw_triangle(); glFlush(); } void draw_triangle(void) { glBegin(GL_TRIANGLES); glVertex3f(1.0, 0.0, 0.0); glVertex3f(0.0, 0.0, -1.0); glVertex3f(-1.0, 0.0, 0.0); glEnd(); } 回答にあったように、glClearColorをいじってみたところ色に変化が見られませんでした。 また、いただいたプログラムを入力してみたのですが、やはり真っ黒のまま何も表示されていませんでした。 やはりopenglが動いていないということなのでしょうか? となるとどのような対策が必要になってくるのでしょうか?

関連するQ&A

専門家に質問してみよう