summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/OffscreenContext.mm1
-rw-r--r--tests/fbo.cc50
-rw-r--r--tests/regression/opencsgtest/render-tests-expected.pngbin10392 -> 9622 bytes
3 files changed, 37 insertions, 14 deletions
diff --git a/tests/OffscreenContext.mm b/tests/OffscreenContext.mm
index 2bbaffa..140516f 100644
--- a/tests/OffscreenContext.mm
+++ b/tests/OffscreenContext.mm
@@ -33,6 +33,7 @@ OffscreenContext *create_offscreen_context(int w, int h)
NSOpenGLPFANoRecovery,
NSOpenGLPFAAccelerated,
NSOpenGLPFADepthSize, 24,
+ NSOpenGLPFAStencilSize, 8,
(NSOpenGLPixelFormatAttribute) 0
};
NSOpenGLPixelFormat *pixFormat = [[[NSOpenGLPixelFormat alloc] initWithAttributes:attributes] autorelease];
diff --git a/tests/fbo.cc b/tests/fbo.cc
index 2978e59..2a3342d 100644
--- a/tests/fbo.cc
+++ b/tests/fbo.cc
@@ -89,14 +89,30 @@ bool fbo_ext_init(fbo_t *fbo, size_t width, size_t height)
return false;
}
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
- GL_RENDERBUFFER_EXT, fbo->depthbuf_id);
- if (report_glerror("specifying depth render buffer EXT")) return false;
-
- if (!check_fbo_status()) {
- cerr << "Problem with OpenGL EXT framebuffer after specifying depth render buffer.\n";
- return false;
- }
+ if (glewIsSupported("GL_EXT_packed_depth_stencil")) {
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
+ GL_RENDERBUFFER_EXT, fbo->depthbuf_id);
+ if (report_glerror("specifying depth render buffer EXT")) return false;
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_STENCIL_ATTACHMENT_EXT,
+ GL_RENDERBUFFER_EXT, fbo->depthbuf_id);
+ if (report_glerror("specifying stencil render buffer EXT")) return false;
+
+ if (!check_fbo_status()) {
+ cerr << "Problem with OpenGL EXT framebuffer after specifying depth render buffer.\n";
+ return false;
+ }
+ }
+ else {
+ cerr << "Warning: Cannot create stencil buffer (GL_EXT_packed_depth_stencil not supported)\n";
+ glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,
+ GL_RENDERBUFFER_EXT, fbo->depthbuf_id);
+ if (report_glerror("specifying depth render buffer EXT")) return false;
+
+ if (!check_fbo_status()) {
+ cerr << "Problem with OpenGL EXT framebuffer after specifying depth stencil render buffer.\n";
+ return false;
+ }
+ }
return true;
}
@@ -126,9 +142,9 @@ bool fbo_arb_init(fbo_t *fbo, size_t width, size_t height)
return false;
}
- glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT,
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT,
GL_RENDERBUFFER, fbo->depthbuf_id);
- if (report_glerror("specifying depth render buffer")) return false;
+ if (report_glerror("specifying depth stencil render buffer")) return false;
if (!check_fbo_status()) {
cerr << "Problem with OpenGL framebuffer after specifying depth render buffer.\n";
@@ -165,16 +181,22 @@ bool fbo_resize(fbo_t *fbo, size_t width, size_t height)
{
if (use_ext()) {
glBindRenderbufferEXT(GL_RENDERBUFFER, fbo->depthbuf_id);
- glRenderbufferStorageEXT(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
- if (report_glerror("creating depth render buffer")) return false;
+ if (glewIsSupported("GL_EXT_packed_depth_stencil")) {
+ glRenderbufferStorageEXT(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);
+ if (report_glerror("creating depth stencil render buffer")) return false;
+ }
+ else {
+ glRenderbufferStorageEXT(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
+ if (report_glerror("creating depth render buffer")) return false;
+ }
glBindRenderbufferEXT(GL_RENDERBUFFER, fbo->renderbuf_id);
glRenderbufferStorageEXT(GL_RENDERBUFFER, GL_RGBA8, width, height);
if (report_glerror("creating color render buffer")) return false;
} else {
glBindRenderbuffer(GL_RENDERBUFFER, fbo->depthbuf_id);
- glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
- if (report_glerror("creating depth render buffer")) return false;
+ glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH24_STENCIL8, width, height);
+ if (report_glerror("creating depth stencil render buffer")) return false;
glBindRenderbuffer(GL_RENDERBUFFER, fbo->renderbuf_id);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA8, width, height);
diff --git a/tests/regression/opencsgtest/render-tests-expected.png b/tests/regression/opencsgtest/render-tests-expected.png
index 40a1703..487cbe8 100644
--- a/tests/regression/opencsgtest/render-tests-expected.png
+++ b/tests/regression/opencsgtest/render-tests-expected.png
Binary files differ
contact: Jan Huwald // Impressum