我正在尝试使用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放大时进行按键操作?
答案 0 :(得分:0)
glDrawPixels不受变换矩阵的影响,因为人们会天真地假设。特别是位置集glRasterPos被转换为视口中的一个点,然后是从数据到帧缓冲区的逐个像素逐个像素的原点。这意味着没有缩放或类似的事情。
使用纹理四边形来获得所需效果。并且不要使用glDrawPixels。永远! glDrawPixels很慢,有很多问题而且支持得很差,因此决定最好将它从OpenGL-3及以后删除。