【发布时间】:2014-01-07 05:10:29
【问题描述】:
我有一个我加载的 2d 纹理
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, gs.width(), gs.height(), 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, gs.buffer());
其中gs 是一个对象,它具有返回正确类型的方法。
在片段着色器中,我从纹理中采样并尝试将其用作生成颜色的 Alpha 通道。如果我将采样值用于输出纹理中的其他通道,它会产生我期望的结果。我用于 Alpha 通道的任何值似乎都被忽略了,因为它总是绘制 Color。
我正在使用以下方式清除屏幕:
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
谁能建议我可能做错了什么?我得到一个带有 8 个红色、8 个绿色、8 个蓝色和 8 个 alpha 位的 OpenGL 4.0 上下文。
顶点着色器:
#version 150
in vec2 position;
in vec3 color;
in vec2 texcoord;
out vec3 Color;
out vec2 Texcoord;
void main()
{
Texcoord = texcoord;
Color = color;
gl_Position = vec4(position, 0.0, 1.0);
}
片段着色器:
#version 150
in vec3 Color;
in vec2 Texcoord;
out vec4 outColor;
uniform sampler2D tex;
void main()
{
float t = texture(tex, Texcoord);
outColor = vec4(Color, t);
}
【问题讨论】: