glDrawPixels将每个RGB分量放在不同的像素中

时间:2015-02-09 09:18:47

标签: c++ opengl gldrawpixels

正如标题所说,红绿蓝值放入不同的插槽,使屏幕上有红绿蓝条纹。 代码非常多:( wh是宽度和高度......)

unsigned int pixels[w * h * 3];
for (unsigned int i = 0; i < w * h * 3; i+=3) {
    pixels[i + 0] = 0xff // Red
    pixels[i + 1] = 0xff // Green
    pixels[i + 2] = 0xff // Blue
}
while(windowIsOpen()) {
    glClear(GL_COLOR_BUFFER_BIT);
    glDrawPixels(w, h, GL_RGB, GL_UNSIGNED_BYTE, pixels);
    glSwapBuffers();
}

但是,当它应该是全白的时候,它产生并且像这样: Not what I want

任何帮助都会很棒!我知道glDrawPixels已被弃用,但我需要一种简单的方法来在屏幕上绘制像素,这个项目的性能不是问题。

1 个答案:

答案 0 :(得分:2)

请注意,在告诉你的opengl你正在发送UNSIGNED_BYTE(sizeof(char)= 1)时,你正在使用一个int的缓冲区(sizeof(int)= 4)。

将缓冲区从int更改为char,看看一切是否正常。