Fixed the level fade-out.
authorrlk <rlk@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Tue, 5 Apr 2011 19:22:23 +0000 (19:22 +0000)
committerrlk <rlk@78b8d119-cf0a-0410-b17c-f493084dd1d7>
Tue, 5 Apr 2011 19:22:23 +0000 (19:22 +0000)
Reworked the shadow texture transform, fixing it for rotating bodies.
Conditioned out separate specular for ES.
Macroed glOrtho for ES compatibility.
Added glClientActiveTexture extension function.
Expanded a few glColorv functions.
Change glLightModeli to glLightModelf for ES compatibility.
Implemented a glClipPlane function compatible with both GL and ES.

git-svn-id: https://s.snth.net/svn/neverball/branches/gles@3559 78b8d119-cf0a-0410-b17c-f493084dd1d7

Makefile
ball/game_draw.c
share/geom.c
share/glext.c
share/glext.h
share/gui.c
share/item.c
share/part.c
share/solid_draw.c
share/solid_draw.h
share/video.c

index 024c6e6..046c02a 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -42,6 +42,7 @@ endif
 
 ifeq ($(DEBUG),1)
     CFLAGS   := -g
+#    CFLAGS   := -O2 -pg
     CPPFLAGS :=
 else
     CFLAGS   := -O2
index ea29863..32f0c2f 100644 (file)
@@ -48,7 +48,7 @@ static const struct d_mtrl *game_draw_balls(const struct d_mtrl *mq,
                  vary->uv[0].r,
                  vary->uv[0].r);
 
-        glColor4fv(c);
+        glColor4f(c[0], c[1], c[2], c[3]);
         mq = ball_draw(mq, ball_M, pend_M, bill_M, t);
     }
     glPopMatrix();
@@ -290,14 +290,7 @@ static void game_clip_refl(int d)
 {
     /* Fudge to eliminate the floor from reflection. */
 
-    GLdouble e[4], k = -0.00001;
-
-    e[0] = 0;
-    e[1] = 1;
-    e[2] = 0;
-    e[3] = k;
-
-    glClipPlane(GL_CLIP_PLANE0, e);
+    glClipPlane4f(GL_CLIP_PLANE0, 0, 1, 0, -0.00001);
 }
 
 static void game_clip_ball(const struct game_draw *gd, int d, const float *p)
@@ -335,8 +328,8 @@ static void game_clip_ball(const struct game_draw *gd, int d, const float *p)
     pz[1] *= d;
     nz[1] *= d;
 
-    glClipPlane(GL_CLIP_PLANE1, nz);
-    glClipPlane(GL_CLIP_PLANE2, pz);
+    glClipPlane4f(GL_CLIP_PLANE1, nz[0], nz[1], nz[2], nz[3]);
+    glClipPlane4f(GL_CLIP_PLANE2, pz[0], pz[1], pz[2], pz[3]);
 }
 
 static const struct d_mtrl *game_draw_fore(const struct d_mtrl *mq,
@@ -521,11 +514,10 @@ void game_draw(const struct game_draw *gd, int pose, float t)
         glPopMatrix();
         video_pop_matrix();
 
-        sol_draw_disable(mq);
-
         /* Draw the fade overlay. */
 
         sol_fade(&gd->draw, gd->fade_k);
+        sol_draw_disable(mq);
     }
 }
 
index 5ce2f21..958203f 100644 (file)
@@ -144,14 +144,14 @@ const struct d_mtrl *goal_draw(const struct d_mtrl *mq, float t)
 
 const struct d_mtrl *jump_draw(const struct d_mtrl *mq, float t, int h)
 {
-    static GLfloat jump_colors[4][4] = {
+    static GLfloat c[4][4] = {
         { 0.75f, 0.5f, 1.0f, 0.5f },
         { 0.75f, 0.5f, 1.0f, 0.8f },
     };
 
     glPushMatrix();
     {
-        glColor4fv(jump_colors[h]);
+        glColor4f(c[h][0], c[h][1], c[h][2], c[h][3]);
 
         glScalef(1.0f, 2.0f, 1.0f);
 
@@ -174,18 +174,20 @@ const struct d_mtrl *jump_draw(const struct d_mtrl *mq, float t, int h)
 
 const struct d_mtrl *swch_draw(const struct d_mtrl *mq, int b, int e)
 {
-    static GLfloat swch_colors[4][4] = {
+    static GLfloat c[4][4] = {
         { 1.0f, 0.0f, 0.0f, 0.5f }, /* red out */
         { 1.0f, 0.0f, 0.0f, 0.8f }, /* red in */
         { 0.0f, 1.0f, 0.0f, 0.5f }, /* green out */
         { 0.0f, 1.0f, 0.0f, 0.8f }, /* green in */
     };
 
+    const int h = 2 * b + e;
+
     glPushMatrix();
     {
         glScalef(1.0f, 2.0f, 1.0f);
 
-        glColor4fv(swch_colors[b * 2 + e]);
+        glColor4f(c[h][0], c[h][1], c[h][2], c[h][3]);
         mq = sol_draw(&beam.draw, mq, 1, 1);
         glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
     }
index d1d3dde..feccbb2 100644 (file)
 
 #ifndef CONF_OPENGLES
 
-PFNGLACTIVETEXTURE_PROC    glActiveTexture_;
+PFNGLCLIENTACTIVETEXTURE_PROC glClientActiveTexture_;
+PFNGLACTIVETEXTURE_PROC       glActiveTexture_;
 
-PFNGLGENBUFFERS_PROC       glGenBuffers_;
-PFNGLBINDBUFFER_PROC       glBindBuffer_;
-PFNGLBUFFERDATA_PROC       glBufferData_;
-PFNGLBUFFERSUBDATA_PROC    glBufferSubData_;
-PFNGLDELETEBUFFERS_PROC    glDeleteBuffers_;
-PFNGLISBUFFER_PROC         glIsBuffer_;
+PFNGLGENBUFFERS_PROC          glGenBuffers_;
+PFNGLBINDBUFFER_PROC          glBindBuffer_;
+PFNGLBUFFERDATA_PROC          glBufferData_;
+PFNGLBUFFERSUBDATA_PROC       glBufferSubData_;
+PFNGLDELETEBUFFERS_PROC       glDeleteBuffers_;
+PFNGLISBUFFER_PROC            glIsBuffer_;
 
-PFNGLPOINTPARAMETERFV_PROC glPointParameterfv_;
+PFNGLPOINTPARAMETERFV_PROC    glPointParameterfv_;
 
 #endif
 
@@ -57,7 +58,7 @@ int glext_check(const char *needle)
 /*---------------------------------------------------------------------------*/
 
 #define SDL_GL_GFPA(fun, str) do {     \
-    ptr = SDL_GL_GetProcAddress(str);  \
+    ptr = SDL_GL_GetProcAddress(str);   \
     memcpy(&fun, &ptr, sizeof (void *)); \
 } while(0)
 
@@ -70,20 +71,52 @@ void glext_init(void)
     void *ptr;
 
     if (glext_check("ARB_multitexture"))
-        SDL_GL_GFPA(glActiveTexture_, "glActiveTextureARB");
+    {
+        SDL_GL_GFPA(glClientActiveTexture_, "glClientActiveTextureARB");
+        SDL_GL_GFPA(glActiveTexture_,       "glActiveTextureARB");
+    }
 
     if (glext_check("ARB_vertex_buffer_object"))
     {
-        SDL_GL_GFPA(glGenBuffers_,    "glGenBuffersARB");
-        SDL_GL_GFPA(glBindBuffer_,    "glBindBufferARB");
-        SDL_GL_GFPA(glBufferData_,    "glBufferDataARB");
-        SDL_GL_GFPA(glBufferSubData_, "glBufferSubDataARB");
-        SDL_GL_GFPA(glDeleteBuffers_, "glDeleteBuffersARB");
-        SDL_GL_GFPA(glIsBuffer_,      "glIsBufferARB");
+        SDL_GL_GFPA(glGenBuffers_,          "glGenBuffersARB");
+        SDL_GL_GFPA(glBindBuffer_,          "glBindBufferARB");
+        SDL_GL_GFPA(glBufferData_,          "glBufferDataARB");
+        SDL_GL_GFPA(glBufferSubData_,       "glBufferSubDataARB");
+        SDL_GL_GFPA(glDeleteBuffers_,       "glDeleteBuffersARB");
+        SDL_GL_GFPA(glIsBuffer_,            "glIsBufferARB");
     }
 
     if (glext_check("ARB_point_parameters"))
-        SDL_GL_GFPA(glPointParameterfv_, "glPointParameterfvARB");
+        SDL_GL_GFPA(glPointParameterfv_,   "glPointParameterfvARB");
+
+#endif
+}
+
+/*---------------------------------------------------------------------------*/
+
+void glClipPlane4f(GLenum p, GLfloat a, GLfloat b, GLfloat c, GLfloat d)
+{
+#ifdef CONF_OPENGLES
+
+    GLfloat v[4];
+
+    v[0] = a;
+    v[1] = b;
+    v[2] = c;
+    v[3] = d;
+
+    glClipPlanef(p, v);
+
+#else
+
+    GLdouble v[4];
+
+    v[0] = a;
+    v[1] = b;
+    v[2] = c;
+    v[3] = d;
+
+    glClipPlane(p, v);
 
 #endif
 }
index 506bd31..06b54e3 100644 (file)
 
 /*---------------------------------------------------------------------------*/
 
-/* Exercise extreme paranoia in defining a cross-platform OpenGL interface.  */
-/* If we're compiling against OpenGL ES then we must assume native linkage   */
-/* of the extensions we use. Otherwise, GetProc them regardless of whether   */
-/* they need it or not.                                                      */
-
-#if defined(GL_VERSION_ES_CM_1_0) || \
-    defined(GL_VERSION_ES_CM_1_1) || \
-    defined(GL_OES_VERSION_1_0)
-
-#define CONF_OPENGLES 1
-
-#else /* ... define the extension API. */
-
-/*---------------------------------------------------------------------------*/
-/* ARB_multisample                                                           */
-
 #ifndef GL_MULTISAMPLE
-#define GL_MULTISAMPLE 0x809D
+#define GL_MULTISAMPLE                0x809D
 #endif
 
-/*---------------------------------------------------------------------------*/
-/* ARB_multitexture                                                          */
-
 #ifndef GL_TEXTURE0
-#define GL_TEXTURE0 0x84C0
+#define GL_TEXTURE0                   0x84C0
 #endif
 
 #ifndef GL_TEXTURE1
-#define GL_TEXTURE1 0x84C1
+#define GL_TEXTURE1                   0x84C1
 #endif
 
 #ifndef GL_TEXTURE2
-#define GL_TEXTURE2 0x84C2
+#define GL_TEXTURE2                   0x84C2
 #endif
 
-typedef void (*PFNGLACTIVETEXTURE_PROC)(GLenum);
-
-extern PFNGLACTIVETEXTURE_PROC glActiveTexture_;
-
-/*---------------------------------------------------------------------------*/
-/* ARB_vertex_buffer_object                                                  */
-
 #ifndef GL_ARRAY_BUFFER
-#define GL_ARRAY_BUFFER         0x8892
+#define GL_ARRAY_BUFFER               0x8892
 #endif
 
 #ifndef GL_ELEMENT_ARRAY_BUFFER
-#define GL_ELEMENT_ARRAY_BUFFER 0x8893
+#define GL_ELEMENT_ARRAY_BUFFER       0x8893
 #endif
 
 #ifndef GL_STATC_DRAW
-#define GL_STATIC_DRAW          0x88E4
+#define GL_STATIC_DRAW                0x88E4
 #endif
 
 #ifndef GL_DYNAMIC_DRAW
-#define GL_DYNAMIC_DRAW         0x88E8
+#define GL_DYNAMIC_DRAW               0x88E8
+#endif
+
+#ifndef GL_POINT_SPRITE
+#define GL_POINT_SPRITE               0x8861
 #endif
 
+#ifndef GL_COORD_REPLACE
+#define GL_COORD_REPLACE              0x8862
+#endif
+
+#ifndef GL_POINT_DISTANCE_ATTENUATIAN
+#define GL_POINT_DISTANCE_ATTENUATION 0x8129
+#endif
+
+/*---------------------------------------------------------------------------*/
+
+int  glext_check(const char *);
+void glext_init(void);
+
+/*---------------------------------------------------------------------------*/
+
+/* Exercise extreme paranoia in defining a cross-platform OpenGL interface.  */
+/* If we're compiling against OpenGL ES then we must assume native linkage   */
+/* of the extensions we use. Otherwise, GetProc them regardless of whether   */
+/* they need it or not.                                                      */
+
+#if defined(GL_VERSION_ES_CM_1_0) || \
+    defined(GL_VERSION_ES_CM_1_1) || \
+    defined(GL_OES_VERSION_1_0)
+
+#define CONF_OPENGLES 1
+
+#define glClientActiveTexture_ glClientActiveTexture
+#define glActiveTexture_       glActiveTexture
+#define glGenBuffers_          glGenBuffers
+#define glBindBuffer_          glBindBuffer
+#define glBufferData_          glBufferData
+#define glBufferSubData_       glBufferSubData
+#define glDeleteBuffers_       glDeleteBuffers
+#define glIsBuffer_            glIsBuffer
+#define glPointParameterfv_    glPointParameterfv
+
+#define glOrtho_               glOrtho
+
+#else /* No native linkage?  Define the extension API. */
+
+#define glOrtho_               glOrtho
+
+/*---------------------------------------------------------------------------*/
+/* ARB_multitexture                                                          */
+
+typedef void (*PFNGLACTIVETEXTURE_PROC)(GLenum);
+typedef void (*PFNGLCLIENTACTIVETEXTURE_PROC)(GLenum);
+
+extern PFNGLCLIENTACTIVETEXTURE_PROC glClientActiveTexture_;
+extern PFNGLACTIVETEXTURE_PROC       glActiveTexture_;
+
+/*---------------------------------------------------------------------------*/
+/* ARB_vertex_buffer_object                                                  */
+
 typedef void      (*PFNGLGENBUFFERS_PROC)(GLsizei, GLuint *);
 typedef void      (*PFNGLBINDBUFFER_PROC)(GLenum, GLuint);
 typedef void      (*PFNGLBUFFERDATA_PROC)(GLenum, GLsizeiptr, const GLvoid *, GLenum);
@@ -108,23 +140,8 @@ extern PFNGLDELETEBUFFERS_PROC glDeleteBuffers_;
 extern PFNGLISBUFFER_PROC      glIsBuffer_;
 
 /*---------------------------------------------------------------------------*/
-/* ARB_point_sprite                                                          */
-
-#ifndef GL_POINT_SPRITE
-#define GL_POINT_SPRITE  0x8861
-#endif
-
-#ifndef GL_COORD_REPLACE
-#define GL_COORD_REPLACE 0x8862
-#endif
-
-/*---------------------------------------------------------------------------*/
 /* ARB_point_parameters                                                      */
 
-#ifndef GL_POINT_DISTANCE_ATTENUATIAN
-#define GL_POINT_DISTANCE_ATTENUATION 0x8129
-#endif
-
 typedef void (*PFNGLPOINTPARAMETERFV_PROC)(GLenum, const GLfloat *);
 
 extern PFNGLPOINTPARAMETERFV_PROC glPointParameterfv_;
@@ -132,8 +149,7 @@ extern PFNGLPOINTPARAMETERFV_PROC glPointParameterfv_;
 /*---------------------------------------------------------------------------*/
 #endif /* !CONF_OPENGLES */
 
-int  glext_check(const char *);
-void glext_init(void);
+void glClipPlane4f(GLenum, GLfloat, GLfloat, GLfloat, GLfloat);
 
 /*---------------------------------------------------------------------------*/
 #endif
index 54181bf..5197a57 100644 (file)
@@ -1349,7 +1349,7 @@ static void gui_paint_image(int id)
                  widget[id].scale);
 
         glBindTexture(GL_TEXTURE_2D, widget[id].image);
-        glColor4ubv(gui_wht);
+        glColor4ub(gui_wht[0], gui_wht[1], gui_wht[2], gui_wht[3]);
         draw_rect(id);
     }
     glPopMatrix();
index 7d6d7f3..1d49e3b 100644 (file)
@@ -30,7 +30,6 @@ void item_color(const struct v_item *hp, float *c)
 {
     switch (hp->t)
     {
-
     case ITEM_COIN:
 
         if (hp->n >= 1)
@@ -38,18 +37,21 @@ void item_color(const struct v_item *hp, float *c)
             c[0] = 1.0f;
             c[1] = 1.0f;
             c[2] = 0.2f;
+            c[3] = 1.0f;
         }
         if (hp->n >= 5)
         {
             c[0] = 1.0f;
             c[1] = 0.2f;
             c[2] = 0.2f;
+            c[3] = 1.0f;
         }
         if (hp->n >= 10)
         {
             c[0] = 0.2f;
             c[1] = 0.2f;
             c[2] = 1.0f;
+            c[3] = 1.0f;
         }
         break;
 
@@ -58,6 +60,7 @@ void item_color(const struct v_item *hp, float *c)
         c[0] = 0.00f;
         c[1] = 0.51f;
         c[2] = 0.80f;
+        c[3] = 1.00f;
 
         break;
 
@@ -66,6 +69,7 @@ void item_color(const struct v_item *hp, float *c)
         c[0] = 1.00f;
         c[1] = 0.76f;
         c[2] = 0.00f;
+        c[3] = 1.00f;
 
         break;
 
@@ -74,6 +78,7 @@ void item_color(const struct v_item *hp, float *c)
         c[0] = 1.0f;
         c[1] = 1.0f;
         c[2] = 1.0f;
+        c[3] = 1.0f;
 
         break;
     }
@@ -98,7 +103,7 @@ const struct d_mtrl *item_draw(const struct d_mtrl *mq,
                                const GLfloat *M, float t)
 {
     struct s_draw *draw = NULL;
-    float c[3];
+    float c[4];
 
     switch (hp->t)
     {
@@ -109,7 +114,7 @@ const struct d_mtrl *item_draw(const struct d_mtrl *mq,
 
     item_color(hp, c);
 
-    glColor3fv(c);
+    glColor4fv(c);
 
     glDepthMask(GL_FALSE);
     {
index 407cd33..d6968e0 100644 (file)
@@ -240,9 +240,9 @@ const struct d_mtrl *part_draw_coin(const struct d_mtrl *mq)
     glBindBuffer_(GL_ARRAY_BUFFER, 0);
 #endif
 
-    glClientActiveTexture(GL_TEXTURE1);
+    glClientActiveTexture_(GL_TEXTURE1);
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE0);
+    glClientActiveTexture_(GL_TEXTURE0);
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 
     glDisableClientState(GL_NORMAL_ARRAY);
@@ -272,9 +272,9 @@ const struct d_mtrl *part_draw_coin(const struct d_mtrl *mq)
     glEnableClientState(GL_NORMAL_ARRAY);
 
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE1);
+    glClientActiveTexture_(GL_TEXTURE1);
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE0);
+    glClientActiveTexture_(GL_TEXTURE0);
 
     return mq;
 }
index 9b0dfa0..f2b206c 100644 (file)
@@ -59,12 +59,11 @@ static void sol_transform(const struct s_vary *vary,
                           const struct v_body *bp)
 {
     float a;
-    float d[4];
     float e[4];
     float p[3];
     float v[3];
 
-    /* Compute the body transform. */
+    /* Apply the body position and rotation to the model-view matrix. */
 
     sol_body_p(p, vary, bp->pi, bp->t);
     sol_body_e(e, vary, bp, 0);
@@ -74,7 +73,7 @@ static void sol_transform(const struct s_vary *vary,
     glTranslatef(p[0], p[1], p[2]);
     glRotatef(V_DEG(a), v[0], v[1], v[2]);
 
-    /* Compute the shadow texture transform */
+    /* Apply the shadow transform to the texture matrix. */
 
     if (vary->uc && vary->uv->r > 0.0)
     {
@@ -83,12 +82,30 @@ static void sol_transform(const struct s_vary *vary,
         {
             float k = 0.25f / vary->uv->r;
 
-            v_sub(d, vary->uv->p, p);
-
             glLoadIdentity();
-            glTranslatef(0.5f - k * d[0],
-                         0.5f - k * d[2], 0.0f);
-            glScalef(k, k, 0.0f);
+
+            /* Center the shadow texture on the ball. */
+
+            glTranslatef(0.5f, 0.5f, 0.0f);
+
+            /* Transform ball XZ position to ST texture coordinate. */
+
+            glRotatef(-90.0f, 1.0f, 0.0f, 0.0f);
+
+            /* Move the shadow texture under the ball. */
+
+            glTranslatef(-vary->uv->p[0],
+                         -vary->uv->p[1],
+                         -vary->uv->p[2]);
+
+            /* Scale the shadow texture to the radius of the ball. */
+
+            glScalef(k, k, k);
+
+            /* Apply the body position and rotation. */
+
+            glTranslatef(p[0], p[1], p[2]);
+            glRotatef(V_DEG(a), v[0], v[1], v[2]);
         }
         glMatrixMode(GL_MODELVIEW);
         glActiveTexture_(GL_TEXTURE0);
@@ -157,9 +174,9 @@ static void sol_bill_enable(const struct s_draw *draw)
     const size_t s = sizeof (GLfloat);
 /*
     glDisableClientState(GL_NORMAL_ARRAY);
-    glClientActiveTexture(GL_TEXTURE1);
+    glClientActiveTexture_(GL_TEXTURE1);
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE0);
+    glClientActiveTexture_(GL_TEXTURE0);
 */
     glBindBuffer_(GL_ARRAY_BUFFER, draw->bill);
 
@@ -171,9 +188,9 @@ static void sol_bill_disable(void)
 {
 /*
     glEnableClientState(GL_NORMAL_ARRAY);
-    glClientActiveTexture(GL_TEXTURE1);
+    glClientActiveTexture_(GL_TEXTURE1);
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE0);
+    glClientActiveTexture_(GL_TEXTURE0);
 */
 }
 
@@ -238,6 +255,7 @@ const struct d_mtrl *sol_apply_mtrl(const struct d_mtrl *mp_draw,
 
     /* Environment mapping. */
 
+#ifndef CONF_OPENGLES
     if ((mp_base->fl & M_ENVIRONMENT) && !(mq_base->fl & M_ENVIRONMENT))
     {
         glEnable(GL_TEXTURE_GEN_S);
@@ -252,6 +270,7 @@ const struct d_mtrl *sol_apply_mtrl(const struct d_mtrl *mp_draw,
         glDisable(GL_TEXTURE_GEN_S);
         glDisable(GL_TEXTURE_GEN_T);
     }
+#endif
 
     /* Additive blending. */
 
@@ -266,13 +285,13 @@ const struct d_mtrl *sol_apply_mtrl(const struct d_mtrl *mp_draw,
     if ((mp_base->fl & M_TWO_SIDED) && !(mq_base->fl & M_TWO_SIDED))
     {
         glDisable(GL_CULL_FACE);
-        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 1);
+        glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 1);
     }
 
     if ((mq_base->fl & M_TWO_SIDED) && !(mp_base->fl & M_TWO_SIDED))
     {
         glEnable(GL_CULL_FACE);
-        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0);
+        glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, 0);
     }
 
     /* Decal offset. */
@@ -424,9 +443,6 @@ static void sol_mesh_vert(struct d_vert *vp,
 
     vp->t[0] = tq->u[0];
     vp->t[1] = tq->u[1];
-
-    vp->u[0] = vq->p[0];
-    vp->u[1] = vq->p[2];
 }
 
 static void sol_mesh_geom(struct d_vert *vv,   int *vn,
@@ -563,9 +579,9 @@ static const struct d_mtrl *sol_draw_mesh(const struct d_mesh *mp,
         glVertexPointer  (3, T, s, (GLvoid *) offsetof (struct d_vert, p));
         glNormalPointer  (   T, s, (GLvoid *) offsetof (struct d_vert, n));
 
-        glClientActiveTexture(GL_TEXTURE1);
-        glTexCoordPointer(2, T, s, (GLvoid *) offsetof (struct d_vert, u));
-        glClientActiveTexture(GL_TEXTURE0);
+        glClientActiveTexture_(GL_TEXTURE1);
+        glTexCoordPointer(3, T, s, (GLvoid *) offsetof (struct d_vert, p));
+        glClientActiveTexture_(GL_TEXTURE0);
         glTexCoordPointer(2, T, s, (GLvoid *) offsetof (struct d_vert, t));
 
         /* Draw the mesh. */
@@ -717,9 +733,9 @@ const struct d_mtrl *sol_draw_enable(void)
     glEnableClientState(GL_VERTEX_ARRAY);
     glEnableClientState(GL_NORMAL_ARRAY);
 
-    glClientActiveTexture(GL_TEXTURE1);
+    glClientActiveTexture_(GL_TEXTURE1);
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE0);
+    glClientActiveTexture_(GL_TEXTURE0);
     glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 
     return &default_draw_mtrl;
@@ -729,9 +745,9 @@ void sol_draw_disable(const struct d_mtrl *mq)
 {
     sol_apply_mtrl(&default_draw_mtrl, mq);
 
-    glClientActiveTexture(GL_TEXTURE1);
+    glClientActiveTexture_(GL_TEXTURE1);
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-    glClientActiveTexture(GL_TEXTURE0);
+    glClientActiveTexture_(GL_TEXTURE0);
     glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 
     glDisableClientState(GL_NORMAL_ARRAY);
index b7ea81d..0485c99 100644 (file)
@@ -30,7 +30,6 @@ struct d_vert
     float p[3];
     float n[3];
     float t[2];
-    float u[2];
 };
 
 struct d_geom
index 18425d2..5418d34 100644 (file)
@@ -98,8 +98,10 @@ int video_mode(int f, int w, int h)
         glEnable(GL_LIGHTING);
         glEnable(GL_BLEND);
 
+#ifndef CONF_OPENGLES
         glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL,
                       GL_SEPARATE_SPECULAR_COLOR);
+#endif
 
         glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
         glDepthFunc(GL_LEQUAL);
@@ -286,7 +288,7 @@ void video_push_ortho(void)
     {
         glPushMatrix();
         glLoadIdentity();
-        glOrtho(0.0, w, 0.0, h, -1.0, +1.0);
+        glOrtho_(0.0, w, 0.0, h, -1.0, +1.0);
     }
     glMatrixMode(GL_MODELVIEW);
 }
@@ -302,14 +304,6 @@ void video_pop_matrix(void)
 
 void video_clear(void)
 {
-/*
-    if (config_get_d(CONFIG_REFLECTION))
-        glClear(GL_COLOR_BUFFER_BIT |
-                GL_DEPTH_BUFFER_BIT |
-                GL_STENCIL_BUFFER_BIT);
-    else
-        glClear(GL_DEPTH_BUFFER_BIT);
-*/
     if (config_get_d(CONFIG_REFLECTION))
         glClear(GL_DEPTH_BUFFER_BIT |
                 GL_STENCIL_BUFFER_BIT);