All pastes #762452 Raw Edit

Miscellany

public text v1 · immutable
·published 2007-11-05 18:21 UTC
rendered paste body
--- Renderer.c	2007-11-05 19:18:14.000000000 -0500
+++ Renderer.c	2007-11-05 12:37:14.165130500 -0500
@@ -5,6 +5,21 @@
 #include <SDL/SDL.h>
 #include <SDL/SDL_opengl.h>
 
+#ifdef _OS_WINDOWS_
+PFNGLACTIVETEXTUREARBPROC glActiveTextureARB = NULL;
+PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB = NULL;
+
+int InitARB() {
+	glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress( "glActiveTextureARB" );
+	glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress( "glMultiTexCoord2fARB" );
+	return (glActiveTextureARB && glMultiTexCoord2fARB);
+}
+#else
+int InitARB() {
+	return 1;
+}
+#endif
+
 SDL_Surface *screen;
 
 int InitRenderer(Renderer *renderer,char *palfile)
@@ -32,6 +47,10 @@
 		fprintf(stderr,"Unable to set video mode: %s\n",SDL_GetError());
 		return 0;
 	}
+	
+	if(!InitARB()) {
+		fprintf(stderr,"Unable to initialize ARB extensions\n");
+	}
 
 	glClearColor(0,0,0,0);
 	glViewport(0,0,screen->w,screen->h);
@@ -201,9 +220,9 @@
 	{
 		MapTile *tile=&map->tiles[x+y*map->w];
 
-		glActiveTexture(GL_TEXTURE0);
+		glActiveTextureARB(GL_TEXTURE0);
 		glDisable(GL_TEXTURE_2D);
-		glActiveTexture(GL_TEXTURE1);
+		glActiveTextureARB(GL_TEXTURE1);
 		glDisable(GL_TEXTURE_2D);
 
 		glBegin(GL_QUADS);
@@ -231,9 +250,9 @@
 
 		glEnd();
 
-		glActiveTexture(GL_TEXTURE0);
+		glActiveTextureARB(GL_TEXTURE0);
 		glEnable(GL_TEXTURE_2D);
-		glActiveTexture(GL_TEXTURE1);
+		glActiveTextureARB(GL_TEXTURE1);
 		glEnable(GL_TEXTURE_2D);
 
 		if(x>0)
@@ -248,18 +267,18 @@
 				float u=CalcTextureExtent(high,low);
 				int tex=AnimateTexture(tile->textures[0],game->frame);
 
-				glActiveTexture(GL_TEXTURE0);
+				glActiveTextureARB(GL_TEXTURE0);
 				glBindTexture(GL_TEXTURE_2D,renderer->textures[tex]);
-				glActiveTexture(GL_TEXTURE1);
+				glActiveTextureARB(GL_TEXTURE1);
 				glBindTexture(GL_TEXTURE_2D,renderer->lights[tex]);
 
 				glBegin(GL_QUADS);
 				glColor3f(c01,c01,c01);
- 				glTexCoord2f(0,1); glMultiTexCoord2f(GL_TEXTURE1,0,1); glVertex3i(x,low,y+1);
-				glTexCoord2f(u,1); glMultiTexCoord2f(GL_TEXTURE1,u,1); glVertex3i(x,high,y+1);
+ 				glTexCoord2f(0,1); glMultiTexCoord2fARB(GL_TEXTURE1,0,1); glVertex3i(x,low,y+1);
+				glTexCoord2f(u,1); glMultiTexCoord2fARB(GL_TEXTURE1,u,1); glVertex3i(x,high,y+1);
 				glColor3f(c00,c00,c00);
- 				glTexCoord2f(u,0); glMultiTexCoord2f(GL_TEXTURE1,u,0); glVertex3i(x,high,y);
-				glTexCoord2f(0,0); glMultiTexCoord2f(GL_TEXTURE1,0,0); glVertex3i(x,low,y);
+ 				glTexCoord2f(u,0); glMultiTexCoord2fARB(GL_TEXTURE1,u,0); glVertex3i(x,high,y);
+				glTexCoord2f(0,0); glMultiTexCoord2fARB(GL_TEXTURE1,0,0); glVertex3i(x,low,y);
 				glEnd();
 			}
 
@@ -271,18 +290,18 @@
 				float u=CalcTextureExtent(high,low);
 				int tex=AnimateTexture(tile->textures[2],game->frame);
 
-				glActiveTexture(GL_TEXTURE0);
+				glActiveTextureARB(GL_TEXTURE0);
 				glBindTexture(GL_TEXTURE_2D,renderer->textures[tex]);
-				glActiveTexture(GL_TEXTURE1);
+				glActiveTextureARB(GL_TEXTURE1);
 				glBindTexture(GL_TEXTURE_2D,renderer->lights[tex]);
 
 				glBegin(GL_QUADS);
 				glColor3f(c00,c00,c00);
-				glTexCoord2f(0,0); glMultiTexCoord2f(GL_TEXTURE1,0,0); glVertex3i(x,high,y);
-				glTexCoord2f(u,0); glMultiTexCoord2f(GL_TEXTURE1,u,0); glVertex3i(x,low,y);
+				glTexCoord2f(0,0); glMultiTexCoord2fARB(GL_TEXTURE1,0,0); glVertex3i(x,high,y);
+				glTexCoord2f(u,0); glMultiTexCoord2fARB(GL_TEXTURE1,u,0); glVertex3i(x,low,y);
 				glColor3f(c01,c01,c01);
-				glTexCoord2f(u,1); glMultiTexCoord2f(GL_TEXTURE1,u,1); glVertex3i(x,low,y+1);
-				glTexCoord2f(0,1); glMultiTexCoord2f(GL_TEXTURE1,0,1); glVertex3i(x,high,y+1);
+				glTexCoord2f(u,1); glMultiTexCoord2fARB(GL_TEXTURE1,u,1); glVertex3i(x,low,y+1);
+				glTexCoord2f(0,1); glMultiTexCoord2fARB(GL_TEXTURE1,0,1); glVertex3i(x,high,y+1);
 				glEnd();
 			}
 		}
@@ -299,18 +318,18 @@
 				float u=CalcTextureExtent(high,low);
 				int tex=AnimateTexture(tile->textures[1],game->frame);
 
-				glActiveTexture(GL_TEXTURE0);
+				glActiveTextureARB(GL_TEXTURE0);
 				glBindTexture(GL_TEXTURE_2D,renderer->textures[tex]);
-				glActiveTexture(GL_TEXTURE1);
+				glActiveTextureARB(GL_TEXTURE1);
 				glBindTexture(GL_TEXTURE_2D,renderer->lights[tex]);
 
 				glBegin(GL_QUADS);
 				glColor3f(c00,c00,c00);
-				glTexCoord2f(0,0); glMultiTexCoord2f(GL_TEXTURE1,0,0); glVertex3i(x,low,y);
-				glTexCoord2f(u,0); glMultiTexCoord2f(GL_TEXTURE1,u,0); glVertex3i(x,high,y);
+				glTexCoord2f(0,0); glMultiTexCoord2fARB(GL_TEXTURE1,0,0); glVertex3i(x,low,y);
+				glTexCoord2f(u,0); glMultiTexCoord2fARB(GL_TEXTURE1,u,0); glVertex3i(x,high,y);
 				glColor3f(c10,c10,c10);
-				glTexCoord2f(u,1); glMultiTexCoord2f(GL_TEXTURE1,u,1); glVertex3i(x+1,high,y);
-				glTexCoord2f(0,1); glMultiTexCoord2f(GL_TEXTURE1,0,1); glVertex3i(x+1,low,y);
+				glTexCoord2f(u,1); glMultiTexCoord2fARB(GL_TEXTURE1,u,1); glVertex3i(x+1,high,y);
+				glTexCoord2f(0,1); glMultiTexCoord2fARB(GL_TEXTURE1,0,1); glVertex3i(x+1,low,y);
 				glEnd();
 			}
 
@@ -322,18 +341,18 @@
 				float u=CalcTextureExtent(high,low);
 				int tex=AnimateTexture(tile->textures[3],game->frame);
 
-				glActiveTexture(GL_TEXTURE0);
+				glActiveTextureARB(GL_TEXTURE0);
 				glBindTexture(GL_TEXTURE_2D,renderer->textures[tex]);
-				glActiveTexture(GL_TEXTURE1);
+				glActiveTextureARB(GL_TEXTURE1);
 				glBindTexture(GL_TEXTURE_2D,renderer->lights[tex]);
 
 				glBegin(GL_QUADS);
 				glColor3f(c10,c10,c10);
-				glTexCoord2f(0,1); glMultiTexCoord2f(GL_TEXTURE1,0,1); glVertex3i(x+1,high,y);
-				glTexCoord2f(u,1); glMultiTexCoord2f(GL_TEXTURE1,u,1); glVertex3i(x+1,low,y);
+				glTexCoord2f(0,1); glMultiTexCoord2fARB(GL_TEXTURE1,0,1); glVertex3i(x+1,high,y);
+				glTexCoord2f(u,1); glMultiTexCoord2fARB(GL_TEXTURE1,u,1); glVertex3i(x+1,low,y);
 				glColor3f(c00,c00,c00);
-				glTexCoord2f(u,0); glMultiTexCoord2f(GL_TEXTURE1,u,0); glVertex3i(x,low,y);
-				glTexCoord2f(0,0); glMultiTexCoord2f(GL_TEXTURE1,0,0); glVertex3i(x,high,y);
+				glTexCoord2f(u,0); glMultiTexCoord2fARB(GL_TEXTURE1,u,0); glVertex3i(x,low,y);
+				glTexCoord2f(0,0); glMultiTexCoord2fARB(GL_TEXTURE1,0,0); glVertex3i(x,high,y);
 				glEnd();
 			}
 		}