我是图形编程新手。我试图使用glDrawPixels绘制,但我的程序没有任何输出。
我在网上进行了调查,不断得到不同的答案,我应该把什么样的数据传给glDrawPixels。
我看到了data[w*h*3]data[w*h][3]data[w][h][3]哪一个是最好的?
到目前为止,
我正在显示功能下存储我的RGB值:

float pixels[1024][768][3];
int i,j;

//Should give me all red
for (i = 0; i < 768; i++) {
  for (j = 0; j < 1024; j++) {
     pixels[j][i][0] = 255.0;
     pixels[j][i][1] = 0.0;
     pixels[j][i][2] = 0.0;
  }
}
glDrawPixels(1024,768,GL_RGB,GL_FLOAT,pixels);

我的主程序:
int main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode (GLUT_RGBA | GLUT_DOUBLE);
    glutInitWindowSize (1024, 768);
    glutCreateWindow (argv[0]);

    glutDisplayFunc(display);
    glutMainLoop();
    return 0;
}

我得到的结果只是一个空窗口,我做错什么了?
提前谢谢。

最佳答案

您需要指定希望将像素放置在视口中的位置(根据您提供的内容,该位置与窗口相同)。
在你打电话之前先打电话给glWindowPos2i(0, 0)。这将在窗口的左下角定位所谓的光栅位置。
关于声明像素的最佳方法的问题,您建议的任何形式都是足够的,因为它们创建了一个可传播的内存数组来存储像素数据。声明的数组中维度的数量不同只会影响索引到数组的方式。

09-06 02:45