diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2010-12-08 00:57:58 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2012-02-28 08:29:09 +0100 |
commit | 53d82587fc031d2847f993fdd4d2dfd3fe565f00 (patch) | |
tree | 7bf93c545c36331a52255983d7e04ea5baad11ed | |
parent | bbc736a4e86bf6a9c50167d61f3e858415c13701 (diff) |
wayland: Add support for a depth buffer
-rw-r--r-- | src/video/wayland/SDL_waylandgl.c | 19 | ||||
-rw-r--r-- | src/video/wayland/SDL_waylandwindow.c | 3 | ||||
-rw-r--r-- | src/video/wayland/SDL_waylandwindow.h | 4 |
3 files changed, 18 insertions, 8 deletions
diff --git a/src/video/wayland/SDL_waylandgl.c b/src/video/wayland/SDL_waylandgl.c index dac3a9d7..6006c531 100644 --- a/src/video/wayland/SDL_waylandgl.c +++ b/src/video/wayland/SDL_waylandgl.c @@ -14,7 +14,7 @@ void Wayland_GL_SwapWindow(_THIS, SDL_Window * window) glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, - data->rbo[data->current]); + data->color_rbo[data->current]); wl_surface_attach(data->surface, data->buffer[data->current ^ 1]); @@ -36,13 +36,22 @@ Wayland_GL_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context) return -1; } - glGenFramebuffers(1, &data->fbo); glBindFramebuffer(GL_FRAMEBUFFER_EXT, data->fbo); - glGenRenderbuffers(2, wind->rbo); + glGenRenderbuffers(1, &wind->depth_rbo); + glBindRenderbuffer(GL_RENDERBUFFER_EXT, wind->depth_rbo); + glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER_EXT, + GL_DEPTH_ATTACHMENT_EXT, + GL_RENDERBUFFER_EXT, + wind->depth_rbo); + glRenderbufferStorage(GL_RENDERBUFFER_EXT, + GL_DEPTH_COMPONENT, + wind->sdlwindow->w, wind->sdlwindow->h); + + glGenRenderbuffers(2, wind->color_rbo); for (i = 0; i < 2; ++i) { - glBindRenderbuffer(GL_RENDERBUFFER_EXT, wind->rbo[i]); + glBindRenderbuffer(GL_RENDERBUFFER_EXT, wind->color_rbo[i]); glEGLImageTargetRenderbufferStorageOES(GL_RENDERBUFFER_EXT, wind->image[i]); } @@ -51,7 +60,7 @@ Wayland_GL_MakeCurrent(_THIS, SDL_Window *window, SDL_GLContext context) glFramebufferRenderbuffer(GL_DRAW_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, - wind->rbo[wind->current]); + wind->color_rbo[wind->current]); printf("framebuffer complete: %d\n", glCheckFramebufferStatus(GL_FRAMEBUFFER_EXT) == GL_FRAMEBUFFER_COMPLETE); diff --git a/src/video/wayland/SDL_waylandwindow.c b/src/video/wayland/SDL_waylandwindow.c index f0cefd72..80b6376b 100644 --- a/src/video/wayland/SDL_waylandwindow.c +++ b/src/video/wayland/SDL_waylandwindow.c @@ -95,7 +95,8 @@ void Wayland_DestroyWindow(_THIS, SDL_Window * window) if (data) { d = data->waylandData; - glDeleteRenderbuffers(2, data->rbo); + glDeleteRenderbuffers(1, &data->depth_rbo); + glDeleteRenderbuffers(2, data->color_rbo); for (i = 0; i < 2; ++i) { wl_buffer_destroy(data->buffer[i]); eglDestroyImageKHR(d->edpy, data->image[i]); diff --git a/src/video/wayland/SDL_waylandwindow.h b/src/video/wayland/SDL_waylandwindow.h index 05295048..88cd6b37 100644 --- a/src/video/wayland/SDL_waylandwindow.h +++ b/src/video/wayland/SDL_waylandwindow.h @@ -15,8 +15,8 @@ typedef struct struct wl_buffer *buffer[2]; EGLImageKHR image[2]; - GLuint rbo[2]; - uint32_t fb_id[2]; + GLuint color_rbo[2]; + GLuint depth_rbo; uint32_t current; struct SDL_WaylandInput *keyboard_device; |