我写一个程序来画一条线。OpenGL - 移动摄像头时线条消失
当我将相机移动到正z轴时(特别是当z轴大于10000时),该线有时会消失。
有一些测试结果。
当z设置20541时,可以看到该行。
当z设置为20542时,该行不能被看到。
当z设置30320时,可以看到该行。
当z设置30321时,该行不能被看到。
等等......
代码已附上。怎么了?
P.S. 该代码是由OpenGL 1.0编写的,但是当使用OpenGL 3.0 + glm库编写代码时,仍然可以获得相同的测试结果。
#include <glut.h>
/*
System Info
-------------
OS: Win7 professional 64-bit SP1
CPU: Intel i3-4170 @ 3.70GHz
GPU: HD Graphics 4400
*/
void display(void) {
// 20541 ok, 20542 not visible
// 30320 ok, 30321 not visible
const GLfloat z = 20541;
const GLfloat far = 1000, near = 0.1;
GLfloat vertices[4 * 3] = {
-far, -far, z - far,
far, far, z - far,
};
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, z, 0, 0, z - 1, 0, 1, 0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum(-0.1, 0.1, -0.1, 0.1, near, far);
glColor3f(0, 1, 1); // blue
glBegin(GL_LINES);
glVertex3f(vertices[0], vertices[1], vertices[2]);
glVertex3f(vertices[3], vertices[4], vertices[5]);
glEnd();
glFlush();
}
int main() {
glutCreateWindow("");
glutDisplayFunc(display);
glutMainLoop();
return 0;
}
我没有仔细观察,但我猜想这条线会移出“远”剪裁平面。 –
您正在使用已弃用的OpenGL(自2007年起!)。 –
你的'glutInit()'调用在哪里? – genpfault