我知道如何加载纹理
std::unique_ptr<glimg::ImageSet> pImgSet(glimg::loaders::dds::LoadFromFile("test.dds"));
GLuint tex = glimg::CreateTexture(pImgSet.get(), 0);
但是如何将这个纹理添加到我的着色器中? GL Image - Unoffcial OpenGL SDK
答案 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
,因此如果您只使用一个纹理单元,则甚至不需要设置制服。