0
我試圖從一個片段着色器讀取texture1d:的OpenGL texture1D
uniform sampler1D world;
...
texelFetch(world, 0, 0);
我上傳W,其中w [0] = 123.0fw [1] = 123.0f ...:
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &pt->world);
glBindTexture(GL_TEXTURE_1D, pt->world);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage1D(GL_TEXTURE_1D, 0, GL_RGBA32F, 2, 0, GL_RGBA, GL_FLOAT, &w);
綁定:
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_1D, pt->world);
glUniform1i(glbPTworld, 0);
但是,當我在glTexImage1D中使用不同於1的寬度時,片段着色器讀取vec4(0,0,0,1)而不是vec4(123,123,123,123)。另外,如果我使用:
glGetTexImage(GL_TEXTURE_1D, 0, GL_RGBA, GL_FLOAT, x);
要獲得紋理,我會看到預期值。
謝謝!這是glTexParameteri中的GL_TEXTURE_2D,我沒有看到它。然而,這個錯誤導致所有這些麻煩有點奇怪,有時候我不明白一些openGL的決定,比如當glTexParameter已經知道時要求紋理類型/尺寸。 – dv1729
還要注意,1D紋理不應該有T包裝模式... – peppe