我是图形编程的新手。我试图使用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;
}
我得到的输出只是一个空窗口,我做错了什么?
提前致谢。
答案 0 :(得分:2)
您需要指定像素放置在视口中的位置(根据您提供的内容,与您的窗口相同)。
在您glWindowPos2i(0, 0)
致电之前,请尝试拨打glDrawPixels
。这应该在窗口的左下角定位所谓的光栅位置。
关于声明像素的最佳方式的问题,你建议的任何形式都足够了,因为它们会创建一个用于存储像素数据的传染性内存数组。您声明的阵列上的维数不同只会影响您索引数组的方式。