小编app*_*pas的帖子

GLSL中的多个纹理 - 只有一个有效

我的问题是在GLSL着色器中可以访问多个纹理.这是我正在做的事情:

着色器:

uniform sampler2D sampler0;
uniform sampler2D sampler1;
uniform float blend;
void main( void )
{
    vec2 coords = gl_TexCoord[0];
    vec4 col = texture2D(sampler0, coords);
    vec4 col2 = texture2D(sampler1, coords);
    if (blend > 0.5){
        gl_FragColor = col;
    } else {
        gl_FragColor = col2;
    }
};
Run Code Online (Sandbox Code Playgroud)

因此,我只需根据统一变量在两个颜色值之间进行选择.足够简单(这是一个测试),但是当混合<= 0.5时,我得到全黑,而不是预期的行为.

OpenGL代码:

m_sampler0location = m_shader.FindUniform("sampler0");
m_sampler1location = m_shader.FindUniform("sampler1");
m_blendlocation = m_shader.FindUniform("blend");

glActiveTexture(GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
m_extensions.glUniform1iARB(m_sampler0location, 0);
glBindTexture(GL_TEXTURE_2D, Texture0.Handle);  
glActiveTexture(GL_TEXTURE1);
glEnable(GL_TEXTURE_2D);
m_extensions.glUniform1iARB(m_sampler1location, 1);
glBindTexture(GL_TEXTURE_2D, Texture1.Handle);
glBegin(GL_QUADS);
    //lower left
    glTexCoord2f(0, 0);
    glVertex2f(-1.0, -1.0);
    //upper left …
Run Code Online (Sandbox Code Playgroud)

opengl textures glsl

21
推荐指数
3
解决办法
4万
查看次数

标签 统计

glsl ×1

opengl ×1

textures ×1