【问题标题】:Does Three.js support OES_texture_float?Three.js 是否支持 OES_texture_float?
【发布时间】:2014-07-30 08:00:22
【问题描述】:

我想将位置或深度渲染到浮动纹理。 我用

vsnTexture = new THREE.WebGLRenderTarget(window.innerWidth, window.innerHeight,
            { minFilter: THREE.NearestFilter, magFilter: THREE.NearestFilter, format: THREE.RGBAFormat ,type:THREE.FloatType }); 

作为渲染目标。

然后,我测试了

var gl = this.renderer.getContext();
    if( !gl.getExtension( "OES_texture_float" ) ){
        console.error( "No OES_texture_float support for float textures!" );
    } 

并没有发现错误。 Chrome 支持 OES_texture_float,我踏入 THREE.js:

_gl.texImage2D( _gl.TEXTURE_2D, 0, glFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );
 //console.log(glType);

当我设置 WebGLRenderTarget:type:THREE.FloatType 时,我发现 glType =5126(gl.FLOAT)。这意味着我可以使用 OES_texture_float。我有什么问题吗?因为无论我设置类型:THREE.FloatType 还是使用默认值 (THREE.UnsignedByteType),我都会得到相同的渲染纹理。 我没有正确使用OES_texture_float 吗?

【问题讨论】:

    标签: floating-point three.js textures webgl-extensions


    【解决方案1】:

    是的,确实如此。这个例子展示了如何使用它:

    http://threejs.org/examples/#webgl_gpgpu_birds

    【讨论】:

    • 谢谢,@mrdoob 我使用来自github.com/arose/arose.github.io/blob/master/demo/oit/examples/… 的示例。我设置了 renderTarget gl.type。当调试到 THREE.js 时,我在 this.setRenderTarget 函数中添加了 console.log(glType);在 setupFrameBuffer(renderTarget.__webglFramebuffer, renderTarget, _gl.TEXTURE_2D ); 之后我得到结果 5126 if(glType === 5126) if( _gl.checkFramebufferStatus(_gl.FRAMEBUFFER) != _gl.FRAMEBUFFER_COMPLETE) alert("You bronser doesn't support" + "FLOAT 作为 FBO 的颜色附件");而且我没有收到任何警报,这是否意味着我使用 gl.Float 集体?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2020-04-23
    • 2019-08-28
    相关资源
    最近更新 更多