Я пишу программу для рисования одной строки.OpenGL - Линия исчезает при перемещении камеры
Линия иногда исчезает, когда я перемещаю камеру на положительную ось z (особенно, когда ось z больше 10000).
Есть некоторые результаты теста.
Когда z set 20541, линия видна.
Когда z set 20542, линия НЕ МОЖЕТ быть видна.
Когда z set 30320, линия видна.
Когда z set 30321, линия НЕ МОЖЕТ быть видна.
и пр.
Код прилагается. Что не так?
P.S. Код написан OpenGL 1.0, но я все равно могу получить тот же результат теста, написанный OpenGL 3.0 + glm library.
#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