[cogl] Fix the GLES 2.0 backend

Update the GLES 2.0 backend to the new COGL API after the breakage
introduced by the journal.

Signed-off-by: Emmanuele Bassi <ebassi@linux.intel.com>
This commit is contained in:
zhou jiangwei 2009-08-11 14:17:28 +01:00 committed by Emmanuele Bassi
parent 1bdfb9e6d4
commit c460786e9e
5 changed files with 20 additions and 8 deletions

View File

@ -88,6 +88,7 @@ typedef void (*CoglJournalBatchCallback) (CoglJournalEntry *start,
void *data); void *data);
typedef gboolean (*CoglJournalBatchTest) (CoglJournalEntry *entry0, typedef gboolean (*CoglJournalBatchTest) (CoglJournalEntry *entry0,
CoglJournalEntry *entry1); CoglJournalEntry *entry1);
typedef CoglVertexBufferIndices CoglJournalIndices;
typedef struct _CoglJournalFlushState typedef struct _CoglJournalFlushState
{ {
@ -212,8 +213,8 @@ _cogl_journal_flush_modelview_and_entries (CoglJournalEntry *batch_start,
int indices_offset = (state->vertex_offset / 4) * 6; int indices_offset = (state->vertex_offset / 4) * 6;
GE (glDrawElements (GL_TRIANGLES, GE (glDrawElements (GL_TRIANGLES,
6 * batch_len, 6 * batch_len,
indices->type, state->indices->type,
indices_offset * state->indices_type_size)); (GLvoid*)(indices_offset * state->indices_type_size)));
} }
else else
{ {

View File

@ -28,7 +28,7 @@
#include "cogl-clip-stack.h" #include "cogl-clip-stack.h"
#include "cogl-matrix-stack.h" #include "cogl-matrix-stack.h"
#include "cogl-current-matrix.h" #include "cogl-current-matrix.h"
#include "cogl-material-private.h"
#include "cogl-gles2-wrapper.h" #include "cogl-gles2-wrapper.h"
typedef struct typedef struct
@ -61,6 +61,7 @@ typedef struct
/* Client-side matrix stack or NULL if none */ /* Client-side matrix stack or NULL if none */
CoglMatrixMode matrix_mode; CoglMatrixMode matrix_mode;
CoglMatrixStack *modelview_stack; CoglMatrixStack *modelview_stack;
CoglMatrixStack *projection_stack;
/* Cache of inverse projection matrix */ /* Cache of inverse projection matrix */
float inverse_projection[16]; float inverse_projection[16];
@ -81,10 +82,12 @@ typedef struct
GArray *journal; GArray *journal;
GArray *logged_vertices; GArray *logged_vertices;
GArray *polygon_vertices; GArray *polygon_vertices;
GLuint journal_vbo;
/* Some simple caching, to minimize state changes... */ /* Some simple caching, to minimize state changes... */
CoglHandle current_material; CoglHandle current_material;
gulong current_material_flags; gulong current_material_flags;
CoglMaterialFlushOptions current_material_flush_options;
GArray *current_layers; GArray *current_layers;
guint n_texcoord_arrays_enabled; guint n_texcoord_arrays_enabled;

View File

@ -229,6 +229,11 @@ struct _CoglGles2WrapperShader
#define GL_MODELVIEW 0x1700 #define GL_MODELVIEW 0x1700
#define GL_PROJECTION 0x1701 #define GL_PROJECTION 0x1701
#ifdef COGL_ENABLE_DEBUG
#define GL_STACK_OVERFLOW 0x0503
#define GL_STACK_UNDERFLOW 0x0504
#endif
#define GL_VERTEX_ARRAY 0x8074 #define GL_VERTEX_ARRAY 0x8074
#define GL_TEXTURE_COORD_ARRAY 0x8078 #define GL_TEXTURE_COORD_ARRAY 0x8078
#define GL_COLOR_ARRAY 0x8076 #define GL_COLOR_ARRAY 0x8076

View File

@ -76,17 +76,17 @@ _cogl_path_stroke_nodes ()
{ {
guint path_start = 0; guint path_start = 0;
gulong enable_flags = COGL_ENABLE_VERTEX_ARRAY; gulong enable_flags = COGL_ENABLE_VERTEX_ARRAY;
CoglMaterialFlushOptions options;
_COGL_GET_CONTEXT (ctx, NO_RETVAL); _COGL_GET_CONTEXT (ctx, NO_RETVAL);
enable_flags |= _cogl_material_get_cogl_enable_flags (ctx->source_material); enable_flags |= _cogl_material_get_cogl_enable_flags (ctx->source_material);
cogl_enable (enable_flags); cogl_enable (enable_flags);
_cogl_material_flush_gl_state (ctx->source_material, options.flags = COGL_MATERIAL_FLUSH_DISABLE_MASK;
COGL_MATERIAL_FLUSH_DISABLE_MASK, options.disable_layers = (guint32)~0;
(guint32)~0, /* disable all texture layers */ _cogl_material_flush_gl_state (ctx->source_material,&options);
NULL); _cogl_flush_matrix_stacks();
_cogl_current_matrix_state_flush ();
while (path_start < ctx->path_nodes->len) while (path_start < ctx->path_nodes->len)
{ {

View File

@ -25,6 +25,7 @@
#define __COGL_TEXTURE_H #define __COGL_TEXTURE_H
#include "cogl-bitmap-private.h" #include "cogl-bitmap-private.h"
#include "cogl-material-private.h"
#include "cogl-handle.h" #include "cogl-handle.h"
typedef struct _CoglTexture CoglTexture; typedef struct _CoglTexture CoglTexture;
@ -103,6 +104,8 @@ typedef struct _CoglJournalEntry
gint n_layers; gint n_layers;
guint32 fallback_mask; guint32 fallback_mask;
GLuint layer0_override_texture; GLuint layer0_override_texture;
CoglMatrix model_view;
CoglMaterialFlushOptions flush_options;
} CoglJournalEntry; } CoglJournalEntry;
CoglTexture* CoglTexture*