我是OpenGL的新手,我一直在体验“黑屏效果”。我花了很多年试图弄清楚为什么我什么都看不到,也没有太多成功。我使用LWJGL,这里是我试图运行一段代码:黑色屏幕效果 - OpenGL
glViewport(0,0,DISPLAY_WIDTH,DISPLAY_HEIGHT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(6200000.0f, 6300000.0f, 350000.0f, 380000.0f, -10000000.0f, 100000000.0f);
gluLookAt(368000.0f, 6250000.0f, -10000.0f, 368000.0f, 6250000.0f, 10000.0f, 0.0f,1.0f,0.0f);
glPushMatrix();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glPushMatrix();
if(ready)
{
glColor3f(1.0f,0.5f,1.0f);
glPointSize(100);
glBegin(GL_POINTS);
for(int i = 0; i < data.length; i += 100)
{
glColor3f(1.0f,1.0f,1.0f);
glVertex3f((float) data[i][1], (float) data[i][2],0.0f);
System.out.println((float) data[i][1] + ", " + (float) data[i][2]);
}
glEnd();
System.out.println("\n\nfinished drawing\n\n");
glFlush();
我用不同的颜色,我用来清除画面绘制。
我的数据集相当大(超过100000点),所以我尝试绘制每百分点,但这不起作用。
我也试图在(400 000,6 800 000)这样的位置上画点,这会给我带来问题吗?我很确定32位浮点数应该能够处理这些值。
我相当肯定,size = 1的像素会尝试在屏幕上绘制为1像素,而不管它与正交投影的边界相比有多小。
也许我正在处理投影矩阵不正确。
这不会导致您的问题,但一次又一次:**不要在投影矩阵上使用'gluLookAt' **。它定义了摄像机/视图,因此属于模型视图矩阵。 –