我是图形编程新手。我试图使用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)
。这将在窗口的左下角定位所谓的光栅位置。
关于声明像素的最佳方法的问题,您建议的任何形式都是足够的,因为它们创建了一个可传播的内存数组来存储像素数据。声明的数组中维度的数量不同只会影响索引到数组的方式。