gluLookAt不工作

时间:2015-01-27 21:33:54

标签: c opengl glut glulookat

我正在尝试使用gluLookAt()函数来控制放大和缩小。现在它根本没有改变矩阵,我不知道为什么。

以下是相关代码:

// Basic Opengl display function
void onDisplay()
{
   // Clear the initial buffer
   glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // Set up viewing transformation, looking down -Z axis
    glLoadIdentity();
    gluLookAt(0, 0, zPosition, 0, 0, -1, 0, 1, 0);


    // Draw the complete Mandelbrot set picture
    glDrawPixels(520, 520, GL_RGB, GL_FLOAT, pixels);
    //glLoadIdentity();
    glutSwapBuffers();
}

void keyPressed (unsigned char key, int x, int y)
{
    if(key == 'w')
    {
        printf("pressed %a", key);
        printf("\n");
        zPosition -= 1.0;
        glutPostRedisplay();
    }
}

是否与glLoadIdentity()调用有关?我不太熟悉openGL中的不同身份。

那么如何更改此代码才能在w放大时进行按键操作?

1 个答案:

答案 0 :(得分:0)

glDrawPixels不受变换矩阵的影响,因为人们会天真地假设。特别是位置集glRasterPos被转换为视口中的一个点,然后是从数据到帧缓冲区的逐个像素逐个像素的原点。这意味着没有缩放或类似的事情。

使用纹理四边形来获得所需效果。并且不要使用glDrawPixels。永远! glDrawPixels很慢,有很多问题而且支持得很差,因此决定最好将它从OpenGL-3及以后删除。