OpenGL 2.1
numaralı belgede doku örneği okudum. Fragment gölgelendirici şuna benzer:Sampler2d nedir?
#version 120
uniform sampler2D texture;
varying vec2 texcoord;
void main(void)
{
gl_FragColor = texture2D(texture, texcoord);
}
texcoord
vertex shader geçirilir.
aşağıdaki C++ render kod kullanılır:
void render()
{
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture_id);
glUniform1i(unf_texture, 0);
}
Bazı şeyleri karıştı. parça gölgelendirici olarak
, doku (glUniform1i ile) sıfır değeri geçirilir: Bazı soru vardır. Değer gerçekten Sıfır mı? Değer başka bir şey mi?
glActiveTexture
gerçekten arandı mı?Neden glUniform1i'de Sıfır değeri iletiliyor?
Her zaman "glActiveTexture" olarak adlandırmak için bir alışkanlık yapmalısınız. Bu şekilde birden fazla doku kullanmanız gerektiğinde, dünyayı kırmayacaksınız. –
açıklığa kavuşturmak - bu nedenle, aynı "GL_TEXTURE0" altında bağlanabilecek her bir yaprağın (1D, 2D, 3D), sampler1D/2D/3D'ye aynı değere (0) geçirilmesi gerektiği doğru mu? ve "GL_TEXTURE1" altında atanan bir doku, 1 değerinin gölgelendiricinin içindeki üniteye geçmesini gerektirebilir? – Chris
@Chris Evet, bu doğru. –