Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl RGB值可以是负值吗?_Opengl - Fatal编程技术网

Opengl RGB值可以是负值吗?

Opengl RGB值可以是负值吗?,opengl,Opengl,我正在尝试使用glVertex绘制图片。这是我的代码: struct Pixel{ GLbyte R, G, B; }; GLbyte * originalData = NULL; . . . originalData = (GLbyte *)malloc(IMAGE_SIZE); fread(originalData, IMAGE_SIZE, 1, file); for (int n = 0; n < 256 * 256; n++){ pixe

我正在尝试使用
glVertex
绘制图片。这是我的代码:

struct Pixel{
    GLbyte R, G, B;
};

 GLbyte * originalData = NULL;

 . . . 

 originalData = (GLbyte *)malloc(IMAGE_SIZE);
 fread(originalData, IMAGE_SIZE, 1, file);
  for (int n = 0; n < 256 * 256; n++){
        pixels[n].R = data[n * 3 + 0];
        pixels[n].G = data[n * 3 + 1];
        pixels[n].B = data[n * 3 + 2];

        if (pixels[n].R < (GLbyte)0) std::cerr << "??" << std::endl;
    }
我的输出看起来更好(但有些颜色还是混在一起了)

注1:我正在尝试光栅化我用Photoshop创建的
.raw
文件


注2:我知道我的方法是伪的,但我正在试验一些东西

您使用的是将参数解释为有符号字节的
glColor3b
。因此,任何颜色值>=128都将被解释为负值,并在以后的管道中被钳制为0(假设有合理的默认值)


既然您想使用0-255的全范围,只需使用
glColor3ub
并使用类型
GLubyte
,它是用于无符号字节的。

既然您正在使用
glubunsigned\u BYTE
用于
glDrawPixels
(您说它看起来不错?),您不应该在自己的方法中使用
GLubyte
glColor3ub
glBegin(GL_POINTS);
unsigned int i = 0;
for (unsigned row = 0; row < iWidth; row++){
    for (unsigned col = 0; col < iHeight; col++){
        glColor3b(pixels[i].R, pixels[i].G, pixels[i].B);
        glVertex3f(row,col,0.0f);
        i++;
    }
}
glEnd();
glColor3b(abs(pixels[i].R), abs(pixels[i].G), abs(pixels[i].B));