提交 11f03ed2 编写于 作者: M Mr.doob

Merge pull request #7278 from nraynaud/patch-5

Make readRenderTargetPixels() compatible with float extensions
...@@ -3212,37 +3212,40 @@ THREE.WebGLRenderer = function ( parameters ) { ...@@ -3212,37 +3212,40 @@ THREE.WebGLRenderer = function ( parameters ) {
restore = true; restore = true;
} }
try {
if ( renderTarget.texture.format !== THREE.RGBAFormat && paramThreeToGL( renderTarget.texture.format ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_FORMAT ) ) { if (renderTarget.texture.format !== THREE.RGBAFormat && paramThreeToGL(renderTarget.texture.format) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_FORMAT)) {
console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' ); console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.');
return; return;
} }
if ( renderTarget.texture.type !== THREE.UnsignedByteType && paramThreeToGL( renderTarget.texture.type ) !== _gl.getParameter( _gl.IMPLEMENTATION_COLOR_READ_TYPE ) ) { if (renderTarget.texture.type !== THREE.UnsignedByteType
&& paramThreeToGL(renderTarget.texture.type) !== _gl.getParameter(_gl.IMPLEMENTATION_COLOR_READ_TYPE)
console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' ); && !(renderTarget.texture.type === THREE.FloatType && extensions.get('WEBGL_color_buffer_float'))
return; && !(renderTarget.texture.type === THREE.HalfFloatType && extensions.get('EXT_color_buffer_half_float'))) {
} console.error('THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.');
return;
if ( _gl.checkFramebufferStatus( _gl.FRAMEBUFFER ) === _gl.FRAMEBUFFER_COMPLETE ) {
}
_gl.readPixels( x, y, width, height, paramThreeToGL( renderTarget.texture.format ), paramThreeToGL( renderTarget.texture.type ), buffer );
if (_gl.checkFramebufferStatus(_gl.FRAMEBUFFER) === _gl.FRAMEBUFFER_COMPLETE) {
} else {
_gl.readPixels(x, y, width, height, paramThreeToGL(renderTarget.texture.format), paramThreeToGL(renderTarget.texture.type), buffer);
console.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );
} else {
}
console.error('THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.');
if ( restore ) {
}
_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer ); } finally {
if ( restore ) {
}
_gl.bindFramebuffer( _gl.FRAMEBUFFER, _currentFramebuffer );
}
}
} }
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册