我知道如何加載紋理如何使用GL圖像加載紋理?
std::unique_ptr<glimg::ImageSet> pImgSet(glimg::loaders::dds::LoadFromFile("test.dds"));
GLuint tex = glimg::CreateTexture(pImgSet.get(), 0);
但我怎麼得到這個紋理到我着色器? GL Image - Unoffcial OpenGL SDK
我知道如何加載紋理如何使用GL圖像加載紋理?
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:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, tex);
添加sampler2D
制服你的shader:
uniform sampler2D myTexture;
設置均勻紋理單元的數量,作爲一個整數:
glUseProgram(program);
GLint location = glGetUniformLocation(program, "myTexture");
glUniform1i(location, 0);
在着色器,請使用texture2D
進行取樣,例如:
gl_FragColor = texture2D(myTexture, texCoords);
要知道的關鍵是制服可以設置爲整數;將其設置爲1表示使用綁定到GL_TEXTURE1
的紋理,依此類推。統一的值默認爲0,並且活動紋理單位默認爲GL_TEXTURE0
,所以如果只使用一個紋理單位,則甚至不需要設置統一。
好吧,我想我現在理解採樣器對象。像這樣的代碼http://open.gl/content/code/c3_basic.txt完全混淆了我。非常感謝。 –
這不是簡單的OpenGL。你在使用什麼框架/庫? – Thomas
@Thomas:[This one。](http://glsdk.sourceforge.net/docs/html/index.html)它也只是紋理加載代碼;這完全不相關。 –
「*但我該如何將這種紋理加入到我的着色器中?」[與您對其他OpenGL紋理所做的相同。](http://www.opengl.org/wiki/Sampler_%28GLSL%29)GL Image只是爲你加載紋理;你如何使用它取決於你。 –