2014-10-24 3 views
3

일부 WebGL 코드를 작성 중이며 부동 소수점 텍스처로 렌더링해야합니다.
확장자가 gl.getExtension('OES_texture_float');gl.getExtension('OES_texture_float_linear'); 인이 이제는이 텍스처를 만들고 그릴 수 있으며 선형 필터를 사용할 수 있습니다.
하지만 제대로 계산되지 않는 것 같습니다. 내가 WebGL에서 부동 소수점 텍스처 렌더링

gl.blendEquation(gl.FUNC_ADD); 
    gl.blendFunc(gl.SRC_ALPHA, gl.ONE); 
    gl.enable(gl.BLEND); 
    gl.disable(gl.DEPTH_TEST); 

을 사용하고 있으므로 텍스처로 렌더링 할 때

는 기본적으로 값은 함께 추가하는 데 필요한. 추가 할 음수 값이있을 수도 있습니다. 지금까지 내가 명령

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, rttFramebuffer.width, rttFramebuffer.height, 0, gl.RGBA, gl.FLOAT, null); 

을 사용했다 WEBGL_color_buffer_float extension

을하지만 난 대신 RGBA32F를 사용할 필요가 있다고 생각 :

지금 인터넷 검색의 몇 시간 후에 나는이 가로 질러왔다. 이것이 가능할 수 있습니까? 그렇다면 확장 형식을 어떻게 사용할 수 있습니까?


해결 방법 : 제안 된대로 사용 된 형식에는 오류가 없었습니다. 셰이더 유니폼에 몇 가지 잘못된 값을 할당하고 잘못된 시각화로 이어지는 매우 불리한 배경색을 사용했습니다.

답변

8

gl.getExtension('OES_texture_float_linear'); 부동 소수점 텍스처를 제공하지 않습니다. 부동 소수점 텍스처에 LINEAR 필터링을 사용할 수 있습니다. gl.getExtension('OES_texture_float');은 부동 소수점 텍스처를 생성 할 수있는 기능을 제공합니다. 그것은 맞습니다이

gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, rttFramebuffer.width, rttFramebuffer.height, 
       0, gl.RGBA, gl.FLOAT, null); 

에 관해서는

. WebGL에는 RGBA32F가 없습니다. gl.RGBA, gl.FLOAT

예, 바보입니다. 이 감독은 OpenGL ES 3.0에서 수정되었으며 WebGL 2.0에서는 고정되지만 현재 WebGL에서는 부동 소수점 텍스처를 만드는 방식으로 수정됩니다.

+0

오 그래, 방금 내 코드에서 잘못된 확장명을 복사했습니다. RGBA32F에 대해 고맙습니다. 텍스처가 올바르게 그려지지 않는 이유가 있습니까? 텍스처에 수레를 쓸 때 블렌딩이 작동하지 않는 것처럼 보입니다. – phen

관련 문제