我寫一個程序來畫一條線。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