gpt4 book ai didi

c++ - 使用 glDrawPixels 时如何更改像素的颜色,我的像素总是红色

转载 作者:搜寻专家 更新时间:2023-10-31 02:12:52 26 4
gpt4 key购买 nike

我有一个函数可以在窗口上逐一绘制像素,但我想知道的是如何让像素以红色以外的其他颜色绘制。提前致谢。我已经尝试了一些东西,例如 glSetColor、glColor3f 等。只是尝试让像素以不同的颜色显示,但到目前为止似乎没有任何效果。

#include <GL/glut.h>
#include <iostream>

using namespace std;

float *PixelBuffer;
void setPixel(int, int);

void display();

int size = 400 * 400 * 3;

int main(int argc, char *argv[])
{

PixelBuffer = new float[400 * 400 * 3];

glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);

glutInitWindowSize(400, 400);

glutInitWindowPosition(100, 100);
glColor3f(0, 1.0, 0);

int firstWindow = glutCreateWindow("First Color");



glClearColor(0, 0, 0, 0); //clears the buffer of OpenGL

for(int i = 0; i < 20; i++)
{
setPixel(i, 10);
}



glutDisplayFunc(display);

glutMainLoop();


return 0;
}

void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();

glDrawPixels(400, 400, GL_RGB, GL_FLOAT, PixelBuffer);
glFlush();
}

void setPixel(int x, int y)
{
int pixelLocation;
int width = 400;
pixLocation = (y * width * 3) + (x * 3);
PixelBuffer[pixelLocation] = 1;
};

最佳答案

您在调用 glDrawPixels 时将 GL_RGB 指定为格式。

然后你计算你的缓冲区中像素的正确位置:

pixLocation = (y * width * 3) + (x * 3);

但是你只能在下一行设置红色像素强度值。您可以像这样访问缓冲区中的其他颜色值:

PixelBuffer[pixelLocation + 0] = 1; // Red pixel intensity
PixelBuffer[pixelLocation + 1] = 1; // Green pixel intensity
PixelBuffer[pixelLocation + 2] = 1; // Blue pixel intensity

关于c++ - 使用 glDrawPixels 时如何更改像素的颜色,我的像素总是红色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42112872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com