0

后处理错误 - copyTexImage2D:帧缓冲区格式不兼容

我正在尝试使用示例中提供的后期效果,但我的控制台中不断出现以下错误,并且没有呈现任何内容。关于可能导致这种情况的任何想法?我认为重要的事情与后处理示例没有什么不同。

WebGL:INVALID_OPERATION:copyTexImage2D:帧缓冲区格式不兼容

renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
renderer.setClearColorHex(0x000000, 1)
renderer.sortObjects = false;

...

composer = new THREE.EffectComposer( renderer )
composer.addPass( new THREE.RenderPass( scene, camera ) )

effect = new THREE.ShaderPass( THREE.DotScreenShader )
effect.uniforms[ 'scale' ].value = 4
composer.addPass( effect )

effect = new THREE.ShaderPass( THREE.FXAAShader )   
composer.addPass( effect )

render = ->
    requestAnimationFrame(render)
    composer.render()

render()
4

3 回答 3

4

您可以尝试使用以下方法将 alpha 添加到 WebGLRenderer 默认帧缓冲区:

renderer = new THREE.WebGLRenderer( { antialias: true, alpha: true } );
于 2013-11-22T17:48:03.240 回答
1

我发现了错误,有一个错误,EffectComposer 与 LensFlare 不兼容,提交更改。

于 2013-02-17T01:07:03.307 回答
0

根据@Axiverse 的建议,如果您的问题与镜头光晕(或其他任何东西)的使用有关,只需添加您自己的渲染目标即可。

//...
var pixelRatio = renderer.getPixelRatio();
var width = Math.floor( renderer.context.canvas.width  / pixelRatio ) || 1;
var height = Math.floor( renderer.context.canvas.height / pixelRatio ) || 1;

var renderTarget = new THREE.WebGLRenderTarget(width, height, {
    minFilter: THREE.LinearFilter,
    magFilter: THREE.LinearFilter,
    format: THREE.RGBAFormat, // <-- The line that fix all for me
    stencilBuffer: false
});

var effectComposer = new THREE.EffectComposer(webGLRenderer, renderTarget);
于 2015-12-02T09:21:09.557 回答