c - openGL glDrawPixels

时间:2016-04-03 04:08:55

标签: c opengl

我是图形编程的新手。我试图使用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; 
}

我得到的输出只是一个空窗口,我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

您需要指定像素放置在视口中的位置(根据您提供的内容,与您的窗口相同)。

在您glWindowPos2i(0, 0)致电之前,请尝试拨打glDrawPixels。这应该在窗口的左下角定位所谓的光栅位置

关于声明像素的最佳方式的问题,你建议的任何形式都足够了,因为它们会创建一个用于存储像素数据的传染性内存数组。您声明的阵列上的维数不同只会影响您索引数组的方式。