Tao Frameworkを使用していますが、使用 glLoadIdentity()
に問題があります。画像をgluDisk
正常にgluLookAt
ロードしています。画像が表示されます。ロードした画像でカメラの位置を変更しようとするgluDisk
と、代わりに、私が見るのは、ロードした画像の背景色を思い出させる色だけです。デバッグを使用した後、glLoadIdentity()
関数が原因で発生することがわかりました。
ディスクを再描画する関数は次のとおりです。
Gl.glClearColor(0F, 0F, 0F, 1.0F);
while (true)
{
world.drawWorld();
Application.DoEvents();
Thread.Sleep(20);
}
これがlookatを変更するための私のコードです:
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
Gl.glMatrixMode(Gl.GL_MODELVIEW); //Switch to the drawing perspective
Gl.glLoadIdentity();
switch (Convert.ToInt32(e.KeyChar))
{
//down arrow
case 76:
rotAngle -= 0.5f;
rotY -= 0.1f;
//rotX = 0;
break;
//up arrow
case 82:
rotAngle += 0.5f;
rotY += 0.1f;
//rotX = 0;
break;
// left arrow
case 85:
rotAngle -= 0.5f;
//rotY = 0;
rotX -= 0.1f;
break;
//right arrow
case 68:
rotAngle += 0.5f;
//rotY = 0;
rotX += 0.1f;
break;
case 'a':
xMove -= 1;
Glu.gluLookAt(xMove, yMove, zMove, xMove + 2, yMove + 2, zMove + 2, 0, 1, 0);
break;
case 'd':
xMove += 1;
Glu.gluLookAt(xMove, yMove, zMove, xMove + 2, yMove + 2, zMove + 2, 0, 1, 0);
break;
case 'w':
yMove +=1;
Glu.gluLookAt(xMove, yMove, zMove, xMove + 2, yMove + 2, zMove + 2, 0, 1, 0);
break;
case 's':
yMove -= 1;
Glu.gluLookAt(xMove, yMove, zMove, xMove + 2, yMove + 2, zMove + 2, 0, 1, 0);
break;
case 'z':
zMove += 1F;
Glu.gluLookAt(xMove, yMove, zMove, 0, 0, 0, 0, 1, 0);
break;
case 'x':
zMove -= 1F;
Glu.gluLookAt(xMove, yMove, zMove, 0, 0, 0, 0, 1, 0);
break;
case '0':
//zMove -= 1F;
Glu.gluLookAt(1, 1, 1, 0, 0, 0, 0, 1, 0);
break;
これが私の描画コードです:
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glEnable(Gl.GL_TEXTURE_2D);
LoadTexture();
Glu.GLUquadric qobj = Glu.gluNewQuadric();
Glu.gluQuadricTexture(qobj, Gl.GL_TRUE);
//Glut.glutSetCursor(Glut.GLUT_CURSOR_NONE);
Gl.glPushMatrix();
Gl.glRotatef(80f, 1.0f, 0.0f, 0.0f);
Glu.gluDisk (qobj,0, 800, 900, 300);
Gl.glPopMatrix();