繁体   English   中英

在OpenGL中绘制完全白色的纹理

[英]Draw Completely White Texture in OpenGL

我想做的是在OpenGL中绘制一个像普通的纹理,但是要完全白色。 我尝试做glColor3f(2.f, 2.f, 2.f)但这不起作用。 我只想绘制某种纹理的形状,但没有颜色,只有白色,所以我想绘制一种纹理,但白色...

为了阐明期望的结果:我希望从纹理采样的所有颜色的RGB部分为白色,而alpha值是从纹理采样的一个。 因此,如果纹理中的值为(R,G,B,A),我希望采样的颜色为(1.0f,1.0f,1.0f,A)。

使用像素着色器,并将每个片段的颜色设置为白色。

要将纹理的颜色变为白色,但仍使用从纹理采样的Alpha值,可以使用:

glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_ADD);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);

GL_ADD纹理环境模式下,传入的片​​段颜色(上面的第二个调用将其设置为白色)将添加到从纹理采样的颜色中,以获得输出颜色。 由于输出颜色被限制在[0.0,1.0]范围内,因此纹理中的颜色分量无关紧要,因为在将结果限制为1.0之前会将它们添加到1.0。 因此,输出的RGB颜色部分将始终为白色。

不太明显的部分是alpha值发生了什么。 根据规范,对于GL_ADD纹理环境模式,将来自传入片段的alpha值和从纹理采样的alpha值相乘 将片段alpha设置为1.0时,这意味着结果值是纹理中的alpha值,这就是您想要的。

在代码中创建一个1x1白色RGBA位图。

GLubyte texData[] = { 255, 255, 255, 255 };

将数据复制到纹理。

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, texData);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM