作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是片段着色器的代码。
in vec2 TexCoord;
uniform sampler2D texture1;
out vec4 OutColor;
void main()
{
OutColor = texture( texture1 , TexCoord);
}
每当传递任何 GL_RED
格式纹理时,灰度图像输出为红色。
我可以通过在着色器中使用纹理的红色参数来解决这个问题,但是是否可以将 GL_RED 图像作为 GL_RGBA 图像发送到着色器。
unsigned char* image = SOIL_load_image(file, &width, &height, &channels , SOIL_LOAD_AUTO);
// Set The Internal Format
if (channels == 4)
{
texture.Internal_Format = gammaCorrect ? GL_SRGB_ALPHA : GL_RGBA;
texture.Image_Format = gammaCorrect ? GL_SRGB_ALPHA : GL_RGBA;
}
else if(channels == 3)
{
texture.Internal_Format = gammaCorrect ? GL_SRGB : GL_RGB;
texture.Image_Format = gammaCorrect ? GL_SRGB : GL_RGB;
}
else if (channels == 1)
{
texture.Internal_Format = GL_RED;
texture.Image_Format = GL_RED;
}
最佳答案
使用 glTexParameter
设置纹理调配参数.例如:
glBindTexture(GL_TEXTURE_2D, textureObject);
if (channels == 1)
{
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_G, GL_RED);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_B, GL_RED);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_A, GL_RED);
}
这会设置将应用于组件的 swizzle。这样一个组件就可以从不同的 channel 获取。
关于c++ - 如何将 GL_RED 格式转换为 GL_RGBA 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70389159/
在 OpenGL 维基中 glTexImage2D ,它写道: internalFormat Specifies the number of color components in the textu
这是片段着色器的代码。 in vec2 TexCoord; uniform sampler2D texture1; out vec4 OutColor; void main() { O
我正在尝试在其颜色缓冲区中设置一个带有 alpha channel 的 OpenGL 窗口。不幸的是,我当前的设置正在创建一个 GL_RGB 后台和前台缓冲区(如 gDEBugger 所报告,以及我的
你好废土的人们:), 简述:iOS平台GL_RGB内部纹理格式存在问题。 在我的应用程序中,我尝试通过使用 GL_RGB 而不是 GL_RGBA 作为内部格式来节省一些内存。我正在使用下一个代码片段来
我是一名优秀的程序员,十分优秀!