한 줄을 그리는 프로그램을 작성했습니다.OpenGL - 카메라 이동시 줄이 사라짐
카메라가 양의 z 축 (특히 10000보다 큰 z 축)으로 이동하면 선이 때때로 사라집니다.
일부 테스트 결과가 있습니다.
z가 20541로 설정되면 줄을 볼 수 있습니다.
z가 20542로 설정되면 줄을 볼 수 없습니다.
z를 설정하면 30320이 표시됩니다.
z가 30321로 설정되면 줄을 볼 수 없습니다.
등 ...
코드가 첨부되어 있습니다. 뭐가 문제 야?
P. 코드는 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