渲染到纹理隐藏了正面,z 缓冲区有问题吗?
Rendering to texture hides the front face,something's wrong with the z buffer?
我想将我的场景渲染到一个纹理上,并将模糊着色器应用到这个纹理上。问题是当我拉回我的纹理时,立方体的正面是不可见的
没有超级采样
使用超级采样
*忽略立方体周围不透明的东西 photos.I 用更少的 alpha 和更大的比例双重渲染立方体一次,我禁用了这个但我有同样的问题。
出于某种原因,我将 y 用作 z,将 z 用作 y,因此立方体正面的 y 小于背面(而不是 z),我猜 z- 有问题缓冲区。
渲染到纹理代码:
public class RenderOnTexture {
private float m_fboScaler = 1f;
private boolean m_fboEnabled = true;
private FrameBuffer m_fbo = null;
private TextureRegion m_fboRegion = null;
public RenderOnTexture(float scale) {
int width = (int) (Gdx.graphics.getWidth()*scale);
int height = (int) (Gdx.graphics.getHeight()*scale);
m_fbo = new FrameBuffer(Format.RGB565, (int)(width * m_fboScaler), (int)(height * m_fboScaler), false);
m_fboRegion = new TextureRegion(m_fbo.getColorBufferTexture());
m_fboRegion.flip(false,false);
}
public void begin(){
if(m_fboEnabled)
{
m_fbo.begin();
Gdx.gl.glClearColor(0, 0,0,0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
}
public TextureRegion end(){
if(m_fbo != null)
{
m_fbo.end();
return m_fboRegion;
}
return null;
}
}
FrameBuffer 中的布尔参数启用深度缓冲区附件。并且深度缓冲区必须与颜色缓冲区一起清除。
我想将我的场景渲染到一个纹理上,并将模糊着色器应用到这个纹理上。问题是当我拉回我的纹理时,立方体的正面是不可见的
没有超级采样
使用超级采样
*忽略立方体周围不透明的东西 photos.I 用更少的 alpha 和更大的比例双重渲染立方体一次,我禁用了这个但我有同样的问题。
出于某种原因,我将 y 用作 z,将 z 用作 y,因此立方体正面的 y 小于背面(而不是 z),我猜 z- 有问题缓冲区。
渲染到纹理代码:
public class RenderOnTexture {
private float m_fboScaler = 1f;
private boolean m_fboEnabled = true;
private FrameBuffer m_fbo = null;
private TextureRegion m_fboRegion = null;
public RenderOnTexture(float scale) {
int width = (int) (Gdx.graphics.getWidth()*scale);
int height = (int) (Gdx.graphics.getHeight()*scale);
m_fbo = new FrameBuffer(Format.RGB565, (int)(width * m_fboScaler), (int)(height * m_fboScaler), false);
m_fboRegion = new TextureRegion(m_fbo.getColorBufferTexture());
m_fboRegion.flip(false,false);
}
public void begin(){
if(m_fboEnabled)
{
m_fbo.begin();
Gdx.gl.glClearColor(0, 0,0,0);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
}
}
public TextureRegion end(){
if(m_fbo != null)
{
m_fbo.end();
return m_fboRegion;
}
return null;
}
}
FrameBuffer 中的布尔参数启用深度缓冲区附件。并且深度缓冲区必须与颜色缓冲区一起清除。