javascript - Three.js 错误:“帧缓冲区和活动纹理之间形成反馈循环” - 渲染反射
问题描述
我正在使用带有WebGLCubeRenderTarget的CubeCamera来渲染类似于此处示例的周围反射 - https://threejs.org/examples/#webgl_materials_cubemap_dynamic
但是该示例不断给出此错误:
[.WebGL-000052760009C700] GL_INVALID_OPERATION:Framebuffer 和活动纹理之间形成反馈循环。
有人看到这个问题吗?我的代码:
const reflection=()=> {
renderer.outputEncoding = THREE.sRGBEncoding; // for post processing pass
cubeRenderTarget1 = new THREE.WebGLCubeRenderTarget( 256, {
format: THREE.RGBFormat,
generateMipmaps: true,
minFilter: THREE.LinearMipmapLinearFilter,
encoding: THREE.sRGBEncoding // prevents the material's shader from recompiling every frame
} );
cubeCamera1 = new THREE.CubeCamera( .01, 10, cubeRenderTarget1 );
cubeCamera1.position.z = 3
cubeCamera1.position.y = -4
reflectionMaterial = new THREE.MeshBasicMaterial( {
envMap: cubeRenderTarget1.texture,
color: 0x011111,
} );
}
reflection()
gltfLoader.load(
'/exportPackages/sceneMaya.glb',
(gltf) =>
{
let meshGLB= gltf.scene.children.find(child => child.name === 'mesh_0')
meshGLB.material = reflectionMaterial
scene.add(gltf.scene)
})
const animate =()=> {
cubeCamera1.update( renderer, scene ); }; animate()
解决方案
修复:我需要添加
meshGLB.visible = false;
cubeCamera1.update( renderer, scene );
meshGLB.visible = true;
以animate()
防止材质本身呈现。
推荐阅读
- ios - Basic SwiftMonkey-Implementation 因“无法加载捆绑包”而失败
- excel - 如何通过 Excel VBA 自动化在 HYSYS 中指定列的内部结构?
- bots - 不是在语音识别中采用序数 [2nd],而是采用 [second] 作为音频输入
- javascript - 调整水平可滚动 div 内的表列大小
- c++ - 存储在 Git 中的带有符号字符的 MFC 资源文件的编码是什么?
- excel - 列中的VBA动态计数
- oracle - Oracle Apex 5.0.0 安装 - 加载图像时出错
- ms-access - 如果不是 rs.eof 那么 rs.movefirst 解释
- r - ggplot的自适应设置?
- google-cloud-platform - GCP 负载均衡器指标 API