テクスチャをロードする方法を知っています
std::unique_ptr<glimg::ImageSet> pImgSet(glimg::loaders::dds::LoadFromFile("test.dds"));
GLuint tex = glimg::CreateTexture(pImgSet.get(), 0);
しかし、このテクスチャをシェーダーに取り込むにはどうすればよいでしょうか? GL イメージ - 非公式の OpenGL SDK
テクスチャをロードする方法を知っています
std::unique_ptr<glimg::ImageSet> pImgSet(glimg::loaders::dds::LoadFromFile("test.dds"));
GLuint tex = glimg::CreateTexture(pImgSet.get(), 0);
しかし、このテクスチャをシェーダーに取り込むにはどうすればよいでしょうか? GL イメージ - 非公式の OpenGL SDK
テクスチャをユニット 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
です。したがって、テクスチャ ユニットを 1 つしか使用しない場合は、ユニフォームを設定する必要さえありません。