我对图形编程很陌生。我试图使用glDrawPixels绘制,但我的程序没有任何输出。我在网上进行了研究,并不断得到关于我应该将哪些数据传递到glDrawPixels中的不同答案。我见过data[w*h*3],data[w*h][3]和data[w][h][3],哪个是最好的?
到目前为止,我正在将我的RGB值存储在display函数下:
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;
}我得到的输出只是一个空窗口,我做错了什么?
提前谢谢。
发布于 2016-04-03 04:22:21
您需要指定要将像素放置在视口中的位置(考虑到所提供的内容,这与窗口相同)。
试着在glWindowPos2i(0, 0)打电话之前给glDrawPixels打电话。这应该定位在你的窗口左下角的所谓光栅位置。
至于您提出的关于声明像素的最佳方法的问题,您建议的任何形式都是足够的,因为它们会创建一个用于存储像素数据的具有传染性的内存数组。您声明的数组上的不同维度数只会影响您在数组中索引的方式。
https://stackoverflow.com/questions/36381519
复制相似问题