Issue #245 only use a depth buffer for offscreen rendering if depth testing is enabled

Change-Id: I58fefef03829acf32db8b7c91b15983ba482d1b9

Former-commit-id: ddd5ee68ad [formerly 863fa0f635] [formerly 3f60daa9c7 [formerly b7b3a581e8291313833b20da308f5adc5a234f26]]
Former-commit-id: 3f60daa9c7
Former-commit-id: d49939ddb2
This commit is contained in:
Ben Steffensmeier 2012-02-08 16:29:02 -06:00
parent 9c6081d7a3
commit b09c00244e

View file

@ -188,10 +188,14 @@ public abstract class AbstractGLImage implements IImage {
public void usaAsFrameBuffer() throws VizException {
GL gl = theTarget.getGl();
if (fbo != -1 && rbuf != -1) {
if (fbo != -1) {
gl.glBindFramebufferEXT(GL.GL_FRAMEBUFFER_EXT, fbo);
gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
if (rbuf != -1) {
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
} else {
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
}
return;
}
gl.glBindTexture(getTextureStorageType(), 0);
@ -201,18 +205,19 @@ public abstract class AbstractGLImage implements IImage {
fbo = ids[0];
gl.glBindFramebufferEXT(GL.GL_FRAMEBUFFER_EXT, fbo);
// Generate and bind a render buffer for the depth component
gl.glGenRenderbuffersEXT(1, ids, 0);
rbuf = ids[0];
gl.glBindRenderbufferEXT(GL.GL_RENDERBUFFER_EXT, rbuf);
gl.glRenderbufferStorageEXT(GL.GL_RENDERBUFFER_EXT,
GL.GL_DEPTH_COMPONENT, getWidth(), getHeight());
gl.glBindRenderbufferEXT(GL.GL_RENDERBUFFER_EXT, 0);
// Attach render buffer to depth of fbo
gl.glFramebufferRenderbufferEXT(GL.GL_FRAMEBUFFER_EXT,
GL.GL_DEPTH_ATTACHMENT_EXT, GL.GL_RENDERBUFFER_EXT, rbuf);
if (gl.glIsEnabled(GL.GL_DEPTH_TEST)) {
// Generate and bind a render buffer for the depth component
gl.glGenRenderbuffersEXT(1, ids, 0);
rbuf = ids[0];
gl.glBindRenderbufferEXT(GL.GL_RENDERBUFFER_EXT, rbuf);
gl.glRenderbufferStorageEXT(GL.GL_RENDERBUFFER_EXT,
GL.GL_DEPTH_COMPONENT, getWidth(), getHeight());
gl.glBindRenderbufferEXT(GL.GL_RENDERBUFFER_EXT, 0);
// Attach render buffer to depth of fbo
gl.glFramebufferRenderbufferEXT(GL.GL_FRAMEBUFFER_EXT,
GL.GL_DEPTH_ATTACHMENT_EXT, GL.GL_RENDERBUFFER_EXT, rbuf);
}
// Attach texture to color attachement on fbo
gl.glFramebufferTexture2DEXT(GL.GL_FRAMEBUFFER_EXT,
GL.GL_COLOR_ATTACHMENT0_EXT, getTextureStorageType(),