1

QGLWidgetQt アプリケーションで OpenGL を使用するために を使用しようとしています。

etcのサブクラスを作って、QGLWidgetそれが動作するかどうかテストしようと思いました。

ただし、次のコードは期待どおりに機能しません。

void MyGLWidget::paintGL() {
  gluLookAt(0,0,-10,0.5,0.5,0,0,1,0);
  glClear(GL_COLOR_BUFFER_BIT);
  glColor3f(1,0,0);
  glBegin(GL_POLYGON);
  glVertex3f(0,0,0);
  glVertex3f(0,1,0);
  glVertex3f(1,1,0);
  glVertex3f(1,0,0);
  glEnd();
}

私が想像したのは、赤い四角の中心を見ることです。代わりに、実行すると、正方形の中心を非常に短時間見ているように見え、その後ディスプレイが黒くなります。

私が間違っていることはありますか?私は他の場所で OpenGL を行っていません。上記の関数は、サブクラスの唯一の OpenGL コードです (今のところ、 と には何もありません::resizeGL()) ::initializeGL()

4

2 に答える 2

2

OpenGLビューポートを設定する必要があると思います。SDKにはQt+OpenGLの例がいくつかあります。見てください!

于 2012-06-11T20:36:45.740 に答える
1

私のコードには 2 つの問題があったようです。まず、次のようにビュー ポートを設定する必要がありました。

void MyGLWidget::resizeGL(int w, int h) {
  glViewport(0, 0, w, h);
  glMatrixMode(GL_PROJECTION);

  glLoadIdentity();
  gluPerspective(45.,((GLfloat)w)/((GLfloat)h),0.1f,1000.0f);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();
}

次に、電話をかけるglLoadIdentity()前に電話するgluLookAt()必要がありましたpaintGL()

于 2012-06-11T21:09:00.350 に答える