Ich schreibe ein Programm, um eine Zeile zu zeichnen.OpenGL - Zeile verschwindet beim Verschieben der Kamera
Die Linie verschwindet manchmal, wenn ich die Kamera zur positiven Z-Achse bewege (besonders wenn die Z-Achse größer als 10000 ist).
Es gibt einige Testergebnisse.
Wenn z 20541 eingestellt ist, kann die Linie gesehen werden.
Wenn z 20542 eingestellt ist, kann die Zeile NICHT gesehen werden.
Wenn z 30320 eingestellt ist, kann die Linie gesehen werden.
Wenn z 30321 eingestellt ist, kann die Zeile NICHT gesehen werden.
usw. ...
Der Code angebracht ist. Was ist los mit dir?
P.S. Der Code wird von OpenGL 1.0 geschrieben, aber ich kann immer noch das gleiche Testergebnis erhalten, wenn es von OpenGL 3.0 + GLM-Bibliothek geschrieben wird.
#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;
}
Ich habe nicht genauer hinsehen, aber ich denke, die Linie bewegt sich aus der "far" Clipping-Ebene. –
Sie verwenden veraltetes OpenGL (seit 2007!). –
Wo ist dein 'glutInit()' Anruf? – genpfault