2009-12-22 6 views
0

일부 32 비트 부동 소수점 데이터를 셰이더에 보내려고했지만 결과가 이상합니다. 전체 흰색 (1,1,1,1)으로 테스트하면 값은 모두 0입니다.GLSL에서 32 비트 RGBA 부동 소수점 값 읽기

gl.glTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA32F_ARB, 512, 512, 0, GL.GL_RGBA, GL.GL_FLOAT, data); 

와 GLSL에서 읽는 : 이것은 내 질감을 만들기위한 코드 내가 임의 값으로 텍스처를 설정하면

uniform sampler2D u_tex1; 

varying vec2 v_uv; 

void main() 
{ 
    gl_FragColor = texture2D(u_tex1, v_uv); 
} 

뭔가가 보여 주지만 올바른 아니에요. 이것은 RGBA32F 텍스처에서 읽는 올바른 방법입니까, 아니면 뭔가 빠졌습니까?

답변

0

당신이 한 일에 많은 정보를 제공하지 않고 있습니다. < 당신이 보여주는 코드는 정확합니다. 내가 그 생각할 수

어떤 일이 잘못 될 수 있습니다

  • 당신의 data (거기에이 수레?)에 올바른 데이터가없는
  • 당신의 질감이 제대로 필터링되지 (당신 이후 1 밉 레벨 만 제공하면 은 밉 매핑을 사용하지 않으려면이 필요합니다.
  • 텍스처가 샘플러 u_tex1의 텍스처 단위에 바인딩되어 있지 않습니다 (사용자가 가져올 수 없기 때문입니다).
  • 당신의 텍스처 좌표는 그들이 생각하지 않습니다 (그리고, 당신의 클램핑/포장 모드에 따라,이 흰색이 아닌 텍셀로 이어질 수 있습니다. 텍스처의 경계와 상호 작용하지 GL_CLAMP_TO_EDGE 또는 GL_REPEAT를 사용)

텍스처 작업을하지 않는 방법이 많이 있습니다.이 목록의 올바른 텍스처를 칠하길 바랍니다.

+0

감사합니다. 잘못된 순서의 ByteBuffer에 데이터를 저장하려고했습니다. 그게 제가 제일 먼저 확인한 것이 었습니다! 버퍼를 할당 한 후이 줄을 삽입해야했습니다. data.order (ByteOrder.nativeOrder()); – notlion

관련 문제