glDrawPixels 将每个 RGB 分量放在不同的像素中
glDrawPixels puts each RGB component in a different pixel
正如标题所说,Red Green 和 Blue 值被放入不同的槽位,使屏幕出现红绿蓝条纹。
代码差不多:(w
和 h
是宽度和高度...)
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,看看是否一切正常。
正如标题所说,Red Green 和 Blue 值被放入不同的槽位,使屏幕出现红绿蓝条纹。
代码差不多:(w
和 h
是宽度和高度...)
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,看看是否一切正常。