2014-03-07 5 views
0

내가 단편 쉐이더에서 texture1d 읽으려고 texture1D : I 업로드OpenGL은

texelFetch(world, 0, 0); 

...

uniform sampler1D world; 

을 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와 다른 너비를 사용하면 조각 쉐이더는 vec4 (123,012,123,123) 대신 vec4 (0,0,0,1)를 읽습니다. 또한, 내가 사용하는 경우 :

glGetTexImage(GL_TEXTURE_1D, 0, GL_RGBA, GL_FLOAT, x); 

다시 얻으려면 예상되는 값이 표시됩니다.

답변

1

코드에 빨간색 플래그가 몇 개 표시되지만 문제와 관련이 있는지 여부는 확실하지 않습니다. 먼저 OpenGL에 텍스처가 2 픽셀 너비에 불과하다는 것을 알려줍니다. 그 맞습니까?

둘째로, 을 glTexParameteri()으로 전달했지만 GL_TEXTURE_1D 텍스처 타겟을 사용하고 있습니다. 그것은 틀린 것처럼 보인다.

+0

고마워요! glTexParameteri의 GL_TEXTURE_2D였습니다. 나는 그것을 보지 못했습니다. 그러나이 오류로 인해이 모든 문제가 발생하는 경우가 조금 있습니다. 일부는 이미 알고있을 때 glTexParameter에서 텍스처 유형/차원을 묻는 것과 같은 일부 OpenGL 결정을 이해하지 못하는 경우가 있습니다. – dv1729

+0

1D 텍스처는 T 랩핑 모드가 없어야한다는 점에 유의하십시오. – peppe