From c83ad109db36a07342a0e4575036cf8410c5f1d4 Mon Sep 17 00:00:00 2001 From: Neil Roberts Date: Thu, 21 May 2009 14:56:38 +0100 Subject: [PATCH] Make backface culling work with vertex buffers Backface culling is enabled as part of cogl_enable so the different rendering functions in Cogl need to explicitly opt-in to have backface culling enabled. Cogl vertex buffers should allow backface culling so they should check whether it is enabled and then set the appropriate cogl_enable flag. --- cogl.h.in | 6 +++--- common/cogl-vertex-buffer.c | 3 +++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cogl.h.in b/cogl.h.in index b3b0584b0..bd3698312 100644 --- a/cogl.h.in +++ b/cogl.h.in @@ -325,9 +325,9 @@ void cogl_enable_depth_test (gboolean setting); * * Sets whether textures positioned so that their backface is showing * should be hidden. This can be used to efficiently draw two-sided - * textures or fully closed cubes without enabling depth testing. Only - * calls to cogl_texture_rectangle() and cogl_texture_polygon() are - * affected. Backface culling is disabled by default. + * textures or fully closed cubes without enabling depth testing. This + * only affects calls to the cogl_rectangle* family of functions and + * cogl_vertex_buffer_draw*. Backface culling is disabled by default. */ void cogl_enable_backface_culling (gboolean setting); diff --git a/common/cogl-vertex-buffer.c b/common/cogl-vertex-buffer.c index b7e004a49..28c9df46b 100644 --- a/common/cogl-vertex-buffer.c +++ b/common/cogl-vertex-buffer.c @@ -1647,6 +1647,9 @@ enable_state_for_drawing_buffer (CoglVertexBuffer *buffer) enable_flags |= cogl_material_get_cogl_enable_flags (ctx->source_material); + if (ctx->enable_backface_culling) + enable_flags |= COGL_ENABLE_BACKFACE_CULLING; + cogl_enable (enable_flags); }