【发布时间】:2011-09-19 08:47:42
【问题描述】:
我没有太多 OpenGL 经验。我正在尝试画一个茶壶并在茶壶周围移动相机。为此,我使用了 gluLookAt 函数。问题是当我调用 gluLookAt 时屏幕是空白的,我看不到我的茶壶。
#include "openGLer.h"
void openGLer::simulate(grid* toSim, int* argc, char** argv)
{
myGrid = toSim;
glutInit(argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(400, 400); //Set the window size
glutCreateWindow("");
glutDisplayFunc(display);
glutIdleFunc(display);
glutKeyboardFunc(handleKeypress);
glEnable(GL_DEPTH_TEST);
glutMainLoop();
}
void openGLer::handleKeypress(unsigned char key, //The key that was pressed
int x, int y)
{
switch (key)
{
case 27: exit(0);
}
}
void openGLer::camera()
{
gluLookAt(3, 3, 0,
0, 0, 0,
0, 1, 0
);
}
void openGLer::draw()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
camera();
glutWireTeapot(0.5);
glutSwapBuffers();
}
void openGLer::display()
{
draw();
}
为什么 gluLookAt() 会使屏幕空白,我该如何解决这个问题?当 camera() 未被调用时,代码按预期执行;展示了一个茶壶。
【问题讨论】:
-
可能你没看茶壶?
-
这样的事情正在发生。但是当没有调用 camera() 时,我可以按预期看到茶壶。
-
因为当你不打电话给
camera()时,你不会改变你正在看的东西。 -
我不太明白。您可以发布对代码的更改吗?
-
不。 OpenGL 红皮书已经通过示例涵盖了所有这些,我不想重新编写它! :)
标签: c++ opengl glut glu perspectivecamera