* clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_wrap_glGetFixedv):
authorNeil Roberts <neil@openedhand.com>
Wed, 28 May 2008 11:29:58 +0000 (11:29 +0000)
committerNeil Roberts <neil@openedhand.com>
Wed, 28 May 2008 11:29:58 +0000 (11:29 +0000)
Filled in the wrapper for glGetFixedv

ChangeLog
clutter/cogl/gles/cogl-gles2-wrapper.c

index 7ab5578..252465d 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2008-05-28  Neil Roberts  <neil@o-hand.com>
 
+       * clutter/cogl/gles/cogl-gles2-wrapper.c (cogl_wrap_glGetFixedv):
+       Filled in the wrapper for glGetFixedv
+
+2008-05-28  Neil Roberts  <neil@o-hand.com>
+
        * clutter/cogl/gles/cogl-texture.c: Use the wrapper for
        glTexParameteri. Call glGenerateMipmap after every change to the
        texture image data.
index 267528c..f7df088 100644 (file)
@@ -613,10 +613,42 @@ cogl_wrap_glClipPlanex (GLenum plane, GLfixed *equation)
   /* FIXME */
 }
 
+static void
+cogl_gles2_float_array_to_fixed (int size, const GLfloat *floats,
+                                GLfixed *fixeds)
+{
+  while (size-- > 0)
+    *(fixeds++) = CLUTTER_FLOAT_TO_FIXED (*(floats++));
+}
+
 void
 cogl_wrap_glGetFixedv (GLenum pname, GLfixed *params)
 {
-  /* FIXME */
+  _COGL_GET_GLES2_WRAPPER (w, NO_RETVAL);
+
+  switch (pname)
+    {
+    case GL_MODELVIEW_MATRIX:
+      cogl_gles2_float_array_to_fixed (16, w->modelview_stack
+                                      + w->modelview_stack_pos * 16,
+                                      params);
+      break;
+
+    case GL_PROJECTION_MATRIX:
+      cogl_gles2_float_array_to_fixed (16, w->projection_stack
+                                      + w->projection_stack_pos * 16,
+                                      params);
+      break;
+
+    case GL_VIEWPORT:
+      {
+       GLfloat v[4];
+
+       glGetFloatv (GL_VIEWPORT, v);
+       cogl_gles2_float_array_to_fixed (4, v, params);
+      }
+      break;
+    }
 }
 
 void