From c5c44939b90807b3435c23be7f20ff45e046c2e1 Mon Sep 17 00:00:00 2001 From: Lee Salzman Date: Sat, 7 Apr 2007 06:58:34 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@941 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/cube.h | 2 +- source/src/protos.h | 6 ++ source/src/rendercubes.cpp | 202 +++++++++++++++++++++++++++++-------- source/src/rendergl.cpp | 28 ++++- source/src/vertmodel.h | 21 ++-- 5 files changed, 202 insertions(+), 57 deletions(-) diff --git a/source/src/cube.h b/source/src/cube.h index 99c14909..351f21d0 100644 --- a/source/src/cube.h +++ b/source/src/cube.h @@ -87,7 +87,7 @@ extern bool demoplayback; extern bool intermission; extern bool arenajoin; extern int maxclients; -extern bool hasoverbright; +extern bool hasoverbright, hasmultitexture; extern int VIRTW; // virtual screen size for text & HUD #define VIRTH 1800 diff --git a/source/src/protos.h b/source/src/protos.h index f87e5a49..bf2552f2 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -326,3 +326,9 @@ extern bool intersect(entity *e, vec &from, vec &to, vec *end=NULL); // rndmap extern void perlinarea(block &b, int scale, int seed, int psize); +// GL_ARB_multitexture +extern PFNGLACTIVETEXTUREARBPROC glActiveTexture_; +extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2f_; +extern PFNGLMULTITEXCOORD3FARBPROC glMultiTexCoord3f_; + + diff --git a/source/src/rendercubes.cpp b/source/src/rendercubes.cpp index 23491bba..6d013586 100644 --- a/source/src/rendercubes.cpp +++ b/source/src/rendercubes.cpp @@ -378,41 +378,141 @@ void setwatercolor(char *r, char *g, char *b, char *a) COMMANDN(watercolour, setwatercolor, ARG_4STR); -inline void vertw(int v1, float v2, int v3, float t, int tex) -{ - float angle = v1*v3*0.1f + t; - float h = sinf(angle); - if(tex) - { - float v = cosf(angle); - if(tex>0) - { - glTexCoord3f(v1+v*0.3f, v2+h*0.3f, v3+v*0.3f); - if(tex>1) glColor4f(1, 1, 1, 0.15f + max(v, 0)*0.15f); - } - else glColor4ub(hdr.watercolor[0], hdr.watercolor[1], hdr.watercolor[2], (uchar)(hdr.watercolor[3] + (max(v, 0) - 0.5f)*51.0f)); - } - glVertex3f((float)v1, v2 + h*0.3f, (float)v3); -} - // renders water for bounding rect area that contains water... simple but very inefficient -void renderwaterstrips(float hf, int tex, float t) -{ - for(int x = wx1; xfr1 * numverts]; pvert2 = &verts[prev->fr2 * numverts]; - dynframe = -1; } - else if(cur.fr1==cur.fr2) + else { - if(cur.fr1==dynframe) return; - dynframe = cur.fr1; + if(dynprev.fr1<0 && dyncur==cur) return; + dynprev.fr1 = -1; } - else dynframe = -1; + dyncur = cur; loopi(numverts) // vertices { vec &v = dynbuf[i];