我需要模糊幀緩衝區,我不知道如何使用THREE.js獲取幀緩衝區。THREE.js模糊幀緩衝區
我想模糊整個幀緩衝區,而不是模糊場景中的每個紋理。所以我想我應該讀幀緩衝區,然後模糊,而不是在着色器中做這個。
這是我曾嘗試:
通話時初始化:
var renderTarget = new THREE.WebGLRenderTarget(512, 512, {
wrapS: THREE.RepeatWrapping,
wrapT: THREE.RepeatWrapping,
minFilter: THREE.NearestFilter,
magFilter: THREE.NearestFilter,
format: THREE.RGBAFormat,
type: THREE.FloatType,
stencilBuffer: false,
depthBuffer: true
});
renderTarget.generateMipmaps = false;
調用每個幀:
var gl = renderer.getContext();
// render to target
renderer.render(scene, camera, renderTarget, false);
framebuffer = renderTarget.__webglFramebuffer;
console.log(framebuffer);
gl.flush();
if (framebuffer != null)
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
var width = height = 512;
var rdData = new Uint8Array(width * height * 4);
gl.readPixels(0, 0, width, height, gl.RGBA, gl.UNSIGNED_BYTE, rdData);
console.log(rdData);
// render to screen
renderer.render(scene, camera);
但framebuffer
是WebFramebuffer {}
和rdData
充滿0
。我是否以正確的方式做這件事?
這並不模糊「場景中的每個紋理」。 – 2013-03-12 05:44:11
@NicolBolas然後,我應該如何詳細模糊整個場景? – Ovilia 2013-03-12 05:53:48
我想你會發現這個帖子洞察你的問題:http://stackoverflow.com/questions/15077762/three-js-shader-texture-linking – gaitat 2013-03-12 09:49:32