Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKent Mein <mein@cs.umn.edu>2008-04-16 21:40:59 +0400
committerKent Mein <mein@cs.umn.edu>2008-04-16 21:40:59 +0400
commit867e12836b746b174743d0500e39343e1adb1b7f (patch)
tree36f42a00eb4ab505eca0c2d67c26c85ed78a9e7e /source/gameengine/Ketsji/BL_Texture.cpp
parentd482b3285cdbfc85b5031fc7223b8ffe96619562 (diff)
This patch spawns from this game engine issue:
[#7113] GE crash pressing as soon as P on 64 bit Note: glext.h has been removed from the source If you get errors compiling with it you have 2 options download/install glext.h (preferred method) or set WITH_BF_GLEXT=false If your a user and having problems with game engine try setting the env var: WITHOUT_GLEXT 1 Kent
Diffstat (limited to 'source/gameengine/Ketsji/BL_Texture.cpp')
-rw-r--r--source/gameengine/Ketsji/BL_Texture.cpp107
1 files changed, 59 insertions, 48 deletions
diff --git a/source/gameengine/Ketsji/BL_Texture.cpp b/source/gameengine/Ketsji/BL_Texture.cpp
index f6fb990fd4c..687b1af957d 100644
--- a/source/gameengine/Ketsji/BL_Texture.cpp
+++ b/source/gameengine/Ketsji/BL_Texture.cpp
@@ -17,6 +17,7 @@
#include <iostream>
#include <map>
+#include <stdlib.h>
#include "BL_Material.h"
#include "BL_Texture.h"
@@ -360,10 +361,13 @@ unsigned int BL_Texture::GetTextureType() const
int BL_Texture::GetMaxUnits()
{
GLint unit=0;
-#ifdef GL_ARB_multitexture
- if(RAS_EXT_support._ARB_multitexture) {
- glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &unit);
- return (MAXTEX>=unit?unit:MAXTEX);
+
+#if defined(GL_ARB_multitexture) && defined(WITH_GLEXT)
+ if (!getenv("WITHOUT_GLEXT")) {
+ if(RAS_EXT_support._ARB_multitexture) {
+ glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &unit);
+ return (MAXTEX>=unit?unit:MAXTEX);
+ }
}
#endif
return 0;
@@ -371,28 +375,33 @@ int BL_Texture::GetMaxUnits()
void BL_Texture::ActivateFirst()
{
-#ifdef GL_ARB_multitexture
- if(RAS_EXT_support._ARB_multitexture)
- bgl::blActiveTextureARB(GL_TEXTURE0_ARB);
+#if defined(GL_ARB_multitexture) && defined(WITH_GLEXT)
+ if (!getenv("WITHOUT_GLEXT")) {
+ if(RAS_EXT_support._ARB_multitexture)
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB);
+ }
#endif
}
void BL_Texture::ActivateUnit(int unit)
{
-#ifdef GL_ARB_multitexture
- if(RAS_EXT_support._ARB_multitexture)
- if(unit <= MAXTEX)
- bgl::blActiveTextureARB(GL_TEXTURE0_ARB+unit);
+#if defined(GL_ARB_multitexture) && defined(WITH_GLEXT)
+ if (!getenv("WITHOUT_GLEXT")) {
+ if(RAS_EXT_support._ARB_multitexture)
+ if(unit <= MAXTEX)
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+unit);
+ }
#endif
}
void BL_Texture::DisableUnit()
{
-#ifdef GL_ARB_multitexture
- if(RAS_EXT_support._ARB_multitexture)
- bgl::blActiveTextureARB(GL_TEXTURE0_ARB+mUnit);
-
+#if defined(GL_ARB_multitexture) && defined(WITH_GLEXT)
+ if (!getenv("WITHOUT_GLEXT")) {
+ if(RAS_EXT_support._ARB_multitexture)
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+mUnit);
+ }
#endif
@@ -420,52 +429,54 @@ void BL_Texture::DisableUnit()
void BL_Texture::DisableAllTextures()
{
-#ifdef GL_ARB_multitexture
- glDisable(GL_BLEND);
- for(int i=0; i<MAXTEX; i++) {
+#if defined(GL_ARB_multitexture) && defined(WITH_GLEXT)
+ if (!getenv("WITHOUT_GLEXT")) {
+ glDisable(GL_BLEND);
+ for(int i=0; i<MAXTEX; i++) {
+ if(RAS_EXT_support._ARB_multitexture)
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
+
+ glMatrixMode(GL_TEXTURE);
+ glLoadIdentity();
+ glMatrixMode(GL_MODELVIEW);
+ glDisable(GL_TEXTURE_2D);
+ glDisable(GL_TEXTURE_GEN_S);
+ glDisable(GL_TEXTURE_GEN_T);
+ glDisable(GL_TEXTURE_GEN_R);
+ glDisable(GL_TEXTURE_GEN_Q);
+ glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
+ }
if(RAS_EXT_support._ARB_multitexture)
- bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
-
- glMatrixMode(GL_TEXTURE);
- glLoadIdentity();
- glMatrixMode(GL_MODELVIEW);
- glDisable(GL_TEXTURE_2D);
- glDisable(GL_TEXTURE_GEN_S);
- glDisable(GL_TEXTURE_GEN_T);
- glDisable(GL_TEXTURE_GEN_R);
- glDisable(GL_TEXTURE_GEN_Q);
- glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB);
}
- if(RAS_EXT_support._ARB_multitexture)
- bgl::blActiveTextureARB(GL_TEXTURE0_ARB);
-
#endif
}
void BL_Texture::ActivateTexture()
{
-#ifdef GL_ARB_multitexture
- if(RAS_EXT_support._ARB_multitexture)
- bgl::blActiveTextureARB(GL_TEXTURE0_ARB+mUnit);
+#if defined(GL_ARB_multitexture) && defined(WITH_GLEXT)
+ if (!getenv("WITHOUT_GLEXT")) {
+ if(RAS_EXT_support._ARB_multitexture)
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+mUnit);
#ifdef GL_ARB_texture_cube_map
- if (mType == GL_TEXTURE_CUBE_MAP_ARB && RAS_EXT_support._ARB_texture_cube_map)
- {
- glBindTexture( GL_TEXTURE_CUBE_MAP_ARB, mTexture );
- glEnable(GL_TEXTURE_CUBE_MAP_ARB);
- }
- else
+ if (mType == GL_TEXTURE_CUBE_MAP_ARB && RAS_EXT_support._ARB_texture_cube_map)
+ {
+ glBindTexture( GL_TEXTURE_CUBE_MAP_ARB, mTexture );
+ glEnable(GL_TEXTURE_CUBE_MAP_ARB);
+ } else
#endif
- {
+ {
- #ifdef GL_ARB_texture_cube_map
- if(RAS_EXT_support._ARB_texture_cube_map )
- glDisable(GL_TEXTURE_CUBE_MAP_ARB);
- #endif
+ #ifdef GL_ARB_texture_cube_map
+ if(RAS_EXT_support._ARB_texture_cube_map )
+ glDisable(GL_TEXTURE_CUBE_MAP_ARB);
+ #endif
- glBindTexture( GL_TEXTURE_2D, mTexture );
- glEnable(GL_TEXTURE_2D);
+ glBindTexture( GL_TEXTURE_2D, mTexture );
+ glEnable(GL_TEXTURE_2D);
+ }
}
#endif
}