Fix the Cogl primitives for the GLES backend
The Cogl primitives broke for GLES 1.1 and 2 after the cogl-float branch merge. CoglPathNode was still being declared as GLfixed for the GLES backend but it was being filled with float values so they were all ending up as numbers < 1. glDrawArrays was being called with GL_FIXED so this has been changed to GL_FLOAT. The scanline rasterizer had a leftover hardcoded ClutterFixed constant to add a small amount to the height of each line. struct _CoglFloatVec2 has been removed because it is no longer used anywhere.
This commit is contained in:
parent
8e437e838f
commit
ba068f6bc9
@ -37,16 +37,6 @@ struct _floatVec2
|
|||||||
float y;
|
float y;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef CLUTTER_COGL_HAS_GL
|
|
||||||
|
|
||||||
typedef struct _CoglFloatVec2 CoglFloatVec2;
|
|
||||||
|
|
||||||
struct _CoglFloatVec2
|
|
||||||
{
|
|
||||||
GLfloat x;
|
|
||||||
GLfloat y;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct _CoglPathNode
|
struct _CoglPathNode
|
||||||
{
|
{
|
||||||
GLfloat x;
|
GLfloat x;
|
||||||
@ -54,17 +44,6 @@ struct _CoglPathNode
|
|||||||
guint path_size;
|
guint path_size;
|
||||||
};
|
};
|
||||||
|
|
||||||
#else /* CLUTTER_COGL_HAS_GL */
|
|
||||||
|
|
||||||
struct _CoglPathNode
|
|
||||||
{
|
|
||||||
GLfixed x;
|
|
||||||
GLfixed y;
|
|
||||||
guint path_size;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif /* CLUTTER_COGL_HAS_GL */
|
|
||||||
|
|
||||||
struct _CoglBezQuad
|
struct _CoglBezQuad
|
||||||
{
|
{
|
||||||
floatVec2 p1;
|
floatVec2 p1;
|
||||||
|
@ -109,7 +109,7 @@ _cogl_path_stroke_nodes ()
|
|||||||
CoglPathNode *path = &g_array_index (ctx->path_nodes, CoglPathNode,
|
CoglPathNode *path = &g_array_index (ctx->path_nodes, CoglPathNode,
|
||||||
path_start);
|
path_start);
|
||||||
|
|
||||||
GE( cogl_wrap_glVertexPointer (2, GL_FIXED, sizeof (CoglPathNode),
|
GE( cogl_wrap_glVertexPointer (2, GL_FLOAT, sizeof (CoglPathNode),
|
||||||
(guchar *) path
|
(guchar *) path
|
||||||
+ G_STRUCT_OFFSET (CoglPathNode, x)) );
|
+ G_STRUCT_OFFSET (CoglPathNode, x)) );
|
||||||
GE( cogl_wrap_glDrawArrays (GL_LINE_STRIP, 0, path->path_size) );
|
GE( cogl_wrap_glDrawArrays (GL_LINE_STRIP, 0, path->path_size) );
|
||||||
@ -177,7 +177,7 @@ _cogl_add_path_to_stencil_buffer (floatVec2 nodes_min,
|
|||||||
{
|
{
|
||||||
cogl_enable (COGL_ENABLE_VERTEX_ARRAY);
|
cogl_enable (COGL_ENABLE_VERTEX_ARRAY);
|
||||||
|
|
||||||
GE( cogl_wrap_glVertexPointer (2, GL_FIXED, sizeof (CoglPathNode),
|
GE( cogl_wrap_glVertexPointer (2, GL_FLOAT, sizeof (CoglPathNode),
|
||||||
(guchar *) path
|
(guchar *) path
|
||||||
+ G_STRUCT_OFFSET (CoglPathNode, x)) );
|
+ G_STRUCT_OFFSET (CoglPathNode, x)) );
|
||||||
GE( cogl_wrap_glDrawArrays (GL_TRIANGLE_FAN, 0, path->path_size) );
|
GE( cogl_wrap_glDrawArrays (GL_TRIANGLE_FAN, 0, path->path_size) );
|
||||||
@ -361,10 +361,10 @@ _cogl_path_fill_nodes_scanlines (CoglPathNode *path,
|
|||||||
if (!next)
|
if (!next)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
x0 = (float)(GPOINTER_TO_INT (iter->data));
|
x0 = GPOINTER_TO_INT (iter->data);
|
||||||
x1 = (float)(GPOINTER_TO_INT (next->data));
|
x1 = GPOINTER_TO_INT (next->data);
|
||||||
y0 = (float)(bounds_y + i);
|
y0 = bounds_y + i;
|
||||||
y1 = (float)(bounds_y + i + 1) + 2048;
|
y1 = bounds_y + i + 1.0625f;
|
||||||
/* render scanlines 1.0625 high to avoid gaps when
|
/* render scanlines 1.0625 high to avoid gaps when
|
||||||
transformed */
|
transformed */
|
||||||
|
|
||||||
@ -392,7 +392,7 @@ _cogl_path_fill_nodes_scanlines (CoglPathNode *path,
|
|||||||
/* render triangles */
|
/* render triangles */
|
||||||
cogl_enable (COGL_ENABLE_VERTEX_ARRAY
|
cogl_enable (COGL_ENABLE_VERTEX_ARRAY
|
||||||
| (ctx->color_alpha < 255 ? COGL_ENABLE_BLEND : 0));
|
| (ctx->color_alpha < 255 ? COGL_ENABLE_BLEND : 0));
|
||||||
GE ( cogl_wrap_glVertexPointer (2, GL_FIXED, 0, coords ) );
|
GE ( cogl_wrap_glVertexPointer (2, GL_FLOAT, 0, coords ) );
|
||||||
GE ( cogl_wrap_glDrawArrays (GL_TRIANGLES, 0, spans * 2 * 3));
|
GE ( cogl_wrap_glDrawArrays (GL_TRIANGLES, 0, spans * 2 * 3));
|
||||||
g_free (coords);
|
g_free (coords);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user