3d 渲染SpriteBatch+;libgdx中三维空间的ParticleEffect?
我使用的是libgdx版本0.9.9。我想在3D空间中使用ParticleEffect和其他3D模型渲染火效果 我的代码的逻辑流:3d 渲染SpriteBatch+;libgdx中三维空间的ParticleEffect?,3d,libgdx,particle-system,spritebatch,3d,Libgdx,Particle System,Spritebatch,我使用的是libgdx版本0.9.9。我想在3D空间中使用ParticleEffect和其他3D模型渲染火效果 我的代码的逻辑流: 模型批处理开始 使用ModelBatch渲染Bullet World中的所有三维模型 模型批处理结束 SpriteBatch开始 使用SpriteBatch使用ParticleEffect(effect.draw)渲染火焰效果 SpriteBatch端 使用Stage绘制HUD 问题是:火焰效果在3D空间的某个点上渲染得很好。但是,当我旋转相机时,3D模型位于相机和
有没有人遇到过类似的问题?是否有任何建议的解决方法可以使ParticleEffect作为3D世界的一部分,以便在被其他3D模型阻止时隐藏它?我看过Xoppa在youtube上发布的关于libgdx中3D粒子的视频,但没有提到任何步骤/解决方案。任何帮助都将不胜感激。如果您希望火焰出现在后面而不是顶部,则需要先渲染spritebatch。问题似乎是,当屏幕以3D方式渲染时,它正在清除自身。有几种方法可以解决这个问题 您可以尝试确保只有第一个进程清除屏幕 代码如下:
Gdx.graphics.getGL20().glClearColor( 1, 0, 0, 1 );
Gdx.graphics.getGL20().glClear( GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT );
不幸的是,如果您的3D渲染器在内部调用它,而您无法控制它,那么您就有点为难了。(我不确定您使用了多少库代码或您自己的代码)
我建议将这两个对象都渲染到帧缓冲区对象,然后您可以将两个帧缓冲区对象中的图像作为2D纹理渲染到屏幕上。然后,如果需要,可以在这些对象之间使用混合,也可以设置alpha或禁用混合,使其中一个位于另一个之上,只要确保以所需的顺序渲染它们即可
未按以下呈现顺序显示SpriteBatch的原因:
使用此功能,粒子效果位于天空前面,但位于3d模型后面。感谢您的帮助。我尝试了帧缓冲区的建议,但没有成功。我在我的具体案例中发现了问题,并实施了可行的解决方案。分享解决方案作为我问题的答案。