如何使用GL Image加载纹理?

时间:2013-05-20 18:52:34

标签: opengl

我知道如何加载纹理

std::unique_ptr<glimg::ImageSet> pImgSet(glimg::loaders::dds::LoadFromFile("test.dds"));
GLuint tex = glimg::CreateTexture(pImgSet.get(), 0);

但是如何将这个纹理添加到我的着色器中? GL Image - Unoffcial OpenGL SDK

1 个答案:

答案 0 :(得分:2)

将纹理绑定到纹理单元,例如单位0:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);

在着色器中添加sampler2D制服:

uniform sampler2D myTexture;

将制服设置为纹理单位的编号,为整数:

glUseProgram(program);
GLint location = glGetUniformLocation(program, "myTexture");
glUniform1i(location, 0);

在着色器中,使用texture2D对其进行采样,例如:

gl_FragColor = texture2D(myTexture, texCoords);

要知道的关键是sampler2D制服可以设为整数;将其设置为1表示使用绑定到GL_TEXTURE1的纹理,依此类推。制服的值默认为0,活动纹理单元默认为GL_TEXTURE0,因此如果您只使用一个纹理单元,则甚至不需要设置制服。