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

glDrawPixels puts each RGB component in a different pixel

正如标题所说,Red Green 和 Blue 值被放入不同的槽位,使屏幕出现红绿蓝条纹。 代码差不多:(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();
}

但是,当它应该是全白的时候,它会产生这样的图像:

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

请注意,当您告诉 opengl 您正在发送 UNSIGNED_BYTE (sizeof(char) = 1).[=10 时,您正在使用一个整数缓冲区 (sizeof(int) = 4) =]

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