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:
Diffstat (limited to 'source/gameengine')
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp4
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp1
-rw-r--r--source/gameengine/Converter/BL_ActionActuator.cpp6
-rw-r--r--source/gameengine/Converter/BL_BlenderDataConversion.cpp13
-rw-r--r--source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp1
-rw-r--r--source/gameengine/GamePlayer/common/GPC_RenderTools.cpp1
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_Application.cpp1
-rw-r--r--source/gameengine/Ketsji/BL_Material.h3
-rw-r--r--source/gameengine/Ketsji/BL_Shader.cpp386
-rw-r--r--source/gameengine/Ketsji/BL_Shader.h25
-rw-r--r--source/gameengine/Ketsji/BL_Texture.cpp27
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp274
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.h6
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp158
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.h6
-rw-r--r--source/gameengine/Ketsji/KX_PyConstraintBinding.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp101
-rw-r--r--source/gameengine/Ketsji/Makefile1
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp54
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h4
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp2
-rw-r--r--source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h2
-rw-r--r--source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp8
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp2
-rw-r--r--source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h2
-rw-r--r--source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h2
-rw-r--r--source/gameengine/Rasterizer/Makefile4
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile4
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp316
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h158
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp113
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp1
32 files changed, 975 insertions, 713 deletions
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index 028dcbe4601..4dbddaf2d62 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -42,6 +42,10 @@
#pragma warning (disable:4786)
#endif
+#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
+#endif
+
#include "KX_BlenderGL.h"
#include "KX_BlenderCanvas.h"
#include "KX_BlenderKeyboardDevice.h"
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
index a100c3aaa0a..8f93ad1a0aa 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
@@ -36,6 +36,7 @@
#include <windows.h>
#endif //WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#else
#include <GL/gl.h>
diff --git a/source/gameengine/Converter/BL_ActionActuator.cpp b/source/gameengine/Converter/BL_ActionActuator.cpp
index 113556f0b11..ee47f86157e 100644
--- a/source/gameengine/Converter/BL_ActionActuator.cpp
+++ b/source/gameengine/Converter/BL_ActionActuator.cpp
@@ -168,16 +168,16 @@ bool BL_ActionActuator::Update(double curtime, bool frame)
// maybe there are events for us in the queue !
if (frame)
{
- for (vector<CValue*>::iterator i=m_events.end(); !(i==m_events.begin());)
+ for (vector<CValue*>::iterator i=m_events.begin(); !(i==m_events.end());i++)
{
- i--;
if ((*i)->GetNumber() == 0.0f)
bNegativeEvent = true;
else
bPositiveEvent= true;
(*i)->Release();
- m_events.pop_back();
+
}
+ m_events.clear();
if (bPositiveEvent)
m_flag |= ACT_FLAG_ACTIVE;
diff --git a/source/gameengine/Converter/BL_BlenderDataConversion.cpp b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
index a2801db7069..10d5e65ed9f 100644
--- a/source/gameengine/Converter/BL_BlenderDataConversion.cpp
+++ b/source/gameengine/Converter/BL_BlenderDataConversion.cpp
@@ -352,7 +352,7 @@ BL_Material* ConvertMaterial( Mesh* mesh, Material *mat, TFace* tface, MFace*
material->flag[i] |= ( tface->transp &TF_ADD )?CALCALPHA:0;
material->ras_mode|= ( tface->transp &(TF_ADD | TF_ALPHA))?TRANSP:0;
material->mapping[i].mapping |= ( (material->img[i]->flag & IMA_REFLECT)!=0 )?USEREFL:0;
- material->blend_mode[i] = BLEND_MUL;
+ //material->blend_mode[i] = BLEND_MUL;
i++;// skip to the next image
valid_index++;
}
@@ -371,12 +371,13 @@ BL_Material* ConvertMaterial( Mesh* mesh, Material *mat, TFace* tface, MFace*
// -----------------------
if( mttmp->tex->imaflag &TEX_USEALPHA ) {
material->flag[i] |= USEALPHA;
- material->ras_mode |= TRANSP;
}
// -----------------------
else if( mttmp->tex->imaflag &TEX_CALCALPHA ) {
material->flag[i] |= CALCALPHA;
- material->ras_mode |= TRANSP;
+ }
+ else if(mttmp->tex->flag &TEX_NEGALPHA) {
+ material->flag[i] |= USENEGALPHA;
}
material->color_blend[i] = mttmp->colfac;
@@ -845,8 +846,10 @@ RAS_MeshObject* BL_ConvertMesh(Mesh* mesh, Object* blenderobj, RAS_IRenderTools*
// -----------------------------------
// pre calculate texture generation
- for(int matid=0; matid<meshobj->NumMaterials(); matid++)
- meshobj->GetMaterialBucket(matid)->GetPolyMaterial()->OnConstruction();
+ for(RAS_MaterialBucket::Set::iterator mit = meshobj->GetFirstMaterial();
+ mit != meshobj->GetLastMaterial(); ++ mit) {
+ (*mit)->GetPolyMaterial()->OnConstruction();
+ }
// -----------------------------------
diff --git a/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp b/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
index dc714fb5fb6..9cad9fcf932 100644
--- a/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
@@ -38,6 +38,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
diff --git a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
index 3d81046e8e9..9bc01e1408e 100644
--- a/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_RenderTools.cpp
@@ -38,6 +38,7 @@
#endif
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#else
#include <GL/gl.h>
diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
index c5324776edb..2ab98750881 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
@@ -41,6 +41,7 @@
#endif
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
diff --git a/source/gameengine/Ketsji/BL_Material.h b/source/gameengine/Ketsji/BL_Material.h
index 0b8856690d4..cf753414245 100644
--- a/source/gameengine/Ketsji/BL_Material.h
+++ b/source/gameengine/Ketsji/BL_Material.h
@@ -112,7 +112,8 @@ enum BL_flag
USEALPHA=4, // use actual alpha channel
TEXALPHA=8, // use alpha combiner functions
TEXNEG=16, // negate blending
- HASIPO=32
+ HASIPO=32,
+ USENEGALPHA=64
};
// BL_Material::ras_mode
diff --git a/source/gameengine/Ketsji/BL_Shader.cpp b/source/gameengine/Ketsji/BL_Shader.cpp
index 7e0b6df3a3a..4c41101b462 100644
--- a/source/gameengine/Ketsji/BL_Shader.cpp
+++ b/source/gameengine/Ketsji/BL_Shader.cpp
@@ -3,6 +3,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
@@ -31,7 +32,7 @@ const bool BL_Shader::Ok()const
return (mShader !=0 && mOk && mUse);
}
-BL_Shader::BL_Shader(int n, PyTypeObject *T)
+BL_Shader::BL_Shader(PyTypeObject *T)
: PyObjectPlus(T),
mShader(0),
mVert(0),
@@ -40,19 +41,14 @@ BL_Shader::BL_Shader(int n, PyTypeObject *T)
mOk(0),
mUse(0),
vertProg(""),
- fragProg("")
+ fragProg(""),
+ mError(0),
+ mLog(0)
+
{
// if !RAS_EXT_support._ARB_shader_objects this class will not be used
- mBlending.src = -1;
- mBlending.dest = -1;
- mBlending.const_color[0] = 0.0;
- mBlending.const_color[1] = 0.0;
- mBlending.const_color[2] = 0.0;
- mBlending.const_color[3] = 1.0;
-
- for (int i=0; i<MAXTEX; i++)
- {
+ for (int i=0; i<MAXTEX; i++) {
mSampler[i].type = 0;
mSampler[i].pass = 0;
mSampler[i].unit = -1;
@@ -66,16 +62,20 @@ using namespace bgl;
BL_Shader::~BL_Shader()
{
#ifdef GL_ARB_shader_objects
+ if(mLog) {
+ MEM_freeN(mLog);
+ mLog=0;
+ }
if( mShader ) {
- glDeleteObjectARB(mShader);
+ bgl::blDeleteObjectARB(mShader);
mShader = 0;
}
if( mFrag ) {
- glDeleteObjectARB(mFrag);
+ bgl::blDeleteObjectARB(mFrag);
mFrag = 0;
}
if( mVert ) {
- glDeleteObjectARB(mVert);
+ bgl::blDeleteObjectARB(mVert);
mVert = 0;
}
@@ -83,7 +83,7 @@ BL_Shader::~BL_Shader()
fragProg = 0;
mOk = 0;
- glUseProgramObjectARB(0);
+ bgl::blUseProgramObjectARB(0);
#endif//GL_ARB_shader_objects
}
@@ -91,68 +91,74 @@ BL_Shader::~BL_Shader()
bool BL_Shader::LinkProgram()
{
#ifdef GL_ARB_shader_objects
- int numchars=0;
- char* log=0;
+
int vertlen = 0, fraglen=0, proglen=0;
+ int vertstatus=0, fragstatus=0, progstatus=0;
+ unsigned int tmpVert=0, tmpFrag=0, tmpProg=0;
+ int char_len=0;
+
+ if(mError)
+ goto programError;
if(!vertProg || !fragProg){
spit("Invalid GLSL sources");
return false;
}
-
- // create our objects
- unsigned int tmpVert = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
- unsigned int tmpFrag = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
- unsigned int tmpProg = glCreateProgramObjectARB();
-
- if(!tmpVert || !tmpFrag || !tmpProg){
- glDeleteObjectARB(tmpVert);
- glDeleteObjectARB(tmpFrag);
- glDeleteObjectARB(tmpProg);
+ if( !RAS_EXT_support._ARB_fragment_shader) {
+ spit("Fragment shaders not supported");
return false;
}
- // set/compile vertex shader
- glShaderSourceARB(tmpVert, 1, (const char**)&vertProg, 0);
- glCompileShaderARB(tmpVert);
- glGetObjectParameterivARB(tmpVert, GL_OBJECT_INFO_LOG_LENGTH_ARB, &vertlen);
-
- if( vertlen > 0 && !PrintInfo(vertlen,tmpVert, "Vertex Shader") ){
- spit("Vertex shader failed");
- glDeleteObjectARB(tmpVert);
- glDeleteObjectARB(tmpFrag);
- glDeleteObjectARB(tmpProg);
- mOk = 0;
+ if( !RAS_EXT_support._ARB_vertex_shader) {
+ spit("Vertex shaders not supported");
return false;
}
- // set/compile fragment shader
- glShaderSourceARB(tmpFrag, 1,(const char**)&fragProg, 0);
- glCompileShaderARB(tmpFrag);
- glGetObjectParameterivARB(tmpFrag, GL_OBJECT_INFO_LOG_LENGTH_ARB, &fraglen);
- if(fraglen >0 && !PrintInfo(fraglen,tmpFrag, "Fragment Shader") ){
- spit("Fragment shader failed");
- glDeleteObjectARB(tmpVert);
- glDeleteObjectARB(tmpFrag);
- glDeleteObjectARB(tmpProg);
- mOk = 0;
- return false;
+
+ // -- vertex shader ------------------
+ tmpVert = bgl::blCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
+ bgl::blShaderSourceARB(tmpVert, 1, (const char**)&vertProg, 0);
+ bgl::blCompileShaderARB(tmpVert);
+ bgl::blGetObjectParameterivARB(tmpVert, GL_OBJECT_INFO_LOG_LENGTH_ARB, &vertlen);
+ // print info if any
+ if( vertlen > 1){
+ PrintInfo(vertlen,tmpVert, &char_len);
+ goto programError;
}
-
- // set compiled vert/frag shader & link
- glAttachObjectARB(tmpProg, tmpVert);
- glAttachObjectARB(tmpProg, tmpFrag);
- glLinkProgramARB(tmpProg);
-
- glGetObjectParameterivARB(tmpProg, GL_OBJECT_INFO_LOG_LENGTH_ARB, &proglen);
- if(proglen > 0){
- PrintInfo(proglen,tmpProg, "GLSL Shader");
+ // check for compile errors
+ bgl::blGetObjectParameterivARB(tmpVert, GL_OBJECT_COMPILE_STATUS_ARB, &vertstatus);
+ if(!vertstatus)
+ goto programError;
+
+ // -- fragment shader ----------------
+ tmpFrag = bgl::blCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
+ bgl::blShaderSourceARB(tmpFrag, 1,(const char**)&fragProg, 0);
+ bgl::blCompileShaderARB(tmpFrag);
+ bgl::blGetObjectParameterivARB(tmpFrag, GL_OBJECT_INFO_LOG_LENGTH_ARB, &fraglen);
+ if(fraglen >1 ){
+ PrintInfo(fraglen,tmpFrag, &char_len);
+ goto programError;
}
- else{
- spit("Program failed");
- glDeleteObjectARB(tmpVert);
- glDeleteObjectARB(tmpFrag);
- glDeleteObjectARB(tmpProg);
- mOk = 0;
- return false;
+ bgl::blGetObjectParameterivARB(tmpFrag, GL_OBJECT_COMPILE_STATUS_ARB, &fragstatus);
+ if(!fragstatus)
+ goto programError;
+
+
+ // -- program ------------------------
+ // set compiled vert/frag shader & link
+ tmpProg = bgl::blCreateProgramObjectARB();
+ bgl::blAttachObjectARB(tmpProg, tmpVert);
+ bgl::blAttachObjectARB(tmpProg, tmpFrag);
+ bgl::blLinkProgramARB(tmpProg);
+ bgl::blGetObjectParameterivARB(tmpProg, GL_OBJECT_INFO_LOG_LENGTH_ARB, &proglen);
+ bgl::blGetObjectParameterivARB(tmpProg, GL_OBJECT_LINK_STATUS_ARB, &progstatus);
+ if(!progstatus)
+ goto programError;
+
+ if(proglen > 0) {
+ // print success
+ PrintInfo(proglen,tmpProg, &char_len);
+ if(char_len >0)
+ spit(mLog);
+ mError = 0;
}
// set
@@ -161,34 +167,42 @@ bool BL_Shader::LinkProgram()
mFrag = tmpFrag;
mOk = 1;
return true;
+
+programError:
+ if(tmpVert) {
+ bgl::blDeleteObjectARB(tmpVert);
+ tmpVert=0;
+ }
+ if(tmpFrag) {
+ bgl::blDeleteObjectARB(tmpFrag);
+ tmpFrag=0;
+ }
+
+ if(tmpProg) {
+ bgl::blDeleteObjectARB(tmpProg);
+ tmpProg=0;
+ }
+
+ mOk = 0;
+ mUse=0;
+ mError = 1;
+ spit("----------");
+ spit("GLSL Error ");
+ if(mLog)
+ spit(mLog);
+ spit("--------------------");
+ return false;
#else
return false;
#endif//GL_ARB_shader_objects
}
-bool BL_Shader::PrintInfo(int len, unsigned int handle, const char *type)
+void BL_Shader::PrintInfo(int len, unsigned int handle, int* num)
{
#ifdef GL_ARB_shader_objects
- int numchars=0;
- char *log = (char*)MEM_mallocN(sizeof(char)*len, "print_log");
- if(!log) {
- spit("BL_Shader::PrintInfo() MEM_mallocN failed");
- return false;
- }
- glGetInfoLogARB(handle, len, &numchars, log);
-
- if(numchars >0){
- spit(type);
- spit(log);
- MEM_freeN(log);
- log=0;
- return false;
- }
- MEM_freeN(log);
- log=0;
- return true;
-#else
- return false
+ mLog = (char*)MEM_mallocN(sizeof(char)*len, "print_log");
+ //MT_assert(mLog, "Failed to create memory");
+ bgl::blGetInfoLogARB(handle, len, num, mLog);
#endif//GL_ARB_shader_objects
}
@@ -234,13 +248,6 @@ const uSampler* BL_Shader::getSampler(int i)
return &mSampler[i];
}
-const uBlending *BL_Shader::getBlending( int pass )
-{
- return &mBlending;
-}
-
-
-
void BL_Shader::InitializeSampler(
int type,
int unit,
@@ -287,7 +294,6 @@ PyMethodDef BL_Shader::Methods[] =
KX_PYMETHODTABLE( BL_Shader, setSampler ),
KX_PYMETHODTABLE( BL_Shader, setUniformMatrix4 ),
KX_PYMETHODTABLE( BL_Shader, setUniformMatrix3 ),
- // KX_PYMETHODTABLE( BL_Shader, setBlending ),
{NULL,NULL} //Sentinel
};
@@ -332,15 +338,14 @@ KX_PYMETHODDEF_DOC( BL_Shader, setSource," setSource(vertexProgram, fragmentProg
vertProg = v;
fragProg = f;
if( LinkProgram() ) {
- glUseProgramObjectARB( mShader );
+ bgl::blUseProgramObjectARB( mShader );
mUse = apply!=0;
Py_Return;
}
vertProg = 0;
fragProg = 0;
mUse = 0;
- glUseProgramObjectARB( 0 );
- PyErr_Format(PyExc_ValueError, "GLSL Error");
+ Py_Return;
}
return NULL;
#else
@@ -352,9 +357,9 @@ KX_PYMETHODDEF_DOC( BL_Shader, setSource," setSource(vertexProgram, fragmentProg
KX_PYMETHODDEF_DOC( BL_Shader, delSource, "delSource( )" )
{
#ifdef GL_ARB_shader_objects
- glDeleteObjectARB(mShader);
- glDeleteObjectARB(mFrag);
- glDeleteObjectARB(mVert);
+ bgl::blDeleteObjectARB(mShader);
+ bgl::blDeleteObjectARB(mFrag);
+ bgl::blDeleteObjectARB(mVert);
mShader = 0;
mFrag = 0;
mVert = 0;
@@ -362,13 +367,12 @@ KX_PYMETHODDEF_DOC( BL_Shader, delSource, "delSource( )" )
fragProg = 0;
mOk = 0;
mUse = 0;
- glUseProgramObjectARB(0);
+ bgl::blUseProgramObjectARB(0);
#endif
Py_Return;
}
-
KX_PYMETHODDEF_DOC( BL_Shader, isValid, "isValid()" )
{
return PyInt_FromLong( ( mShader !=0 && mOk ) );
@@ -384,21 +388,22 @@ KX_PYMETHODDEF_DOC( BL_Shader, getFragmentProg ,"getFragmentProg( )" )
return PyString_FromString(fragProg?fragProg:"");
}
-
KX_PYMETHODDEF_DOC( BL_Shader, validate, "validate()")
{
#ifdef GL_ARB_shader_objects
- if(mShader==0)
- {
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
+ if(mShader==0) {
PyErr_Format(PyExc_TypeError, "invalid shader object");
return NULL;
}
-
int stat = 0;
- glValidateProgramARB(mShader);
- glGetObjectParameterivARB(mShader, GL_OBJECT_VALIDATE_STATUS_ARB, &stat);
-
- return PyInt_FromLong((stat!=0));
+ bgl::blValidateProgramARB(mShader);
+ bgl::blGetObjectParameterivARB(mShader, GL_OBJECT_VALIDATE_STATUS_ARB, &stat);
+ return PyInt_FromLong(0);
#else
Py_Return;
#endif//GL_ARB_shader_objects
@@ -408,6 +413,11 @@ KX_PYMETHODDEF_DOC( BL_Shader, validate, "validate()")
KX_PYMETHODDEF_DOC( BL_Shader, setSampler, "setSampler(name, index)" )
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
char *uniform="";
int index=-1;
if(PyArg_ParseTuple(args, "si", &uniform, &index))
@@ -417,7 +427,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setSampler, "setSampler(name, index)" )
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader, uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader, uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
@@ -446,7 +456,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setNumberOfPasses, "setNumberOfPasses( max-pass )
if(!PyArg_ParseTuple(args, "i", &pass))
return NULL;
- mPass = pass;
+ mPass = 1;
Py_Return;
}
@@ -454,6 +464,11 @@ KX_PYMETHODDEF_DOC( BL_Shader, setNumberOfPasses, "setNumberOfPasses( max-pass )
KX_PYMETHODDEF_DOC( BL_Shader, setUniform1f, "setUniform1f(name, fx)" )
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
char *uniform="";
float value=0;
if(PyArg_ParseTuple(args, "sf", &uniform, &value ))
@@ -463,15 +478,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform1f, "setUniform1f(name, fx)" )
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader, uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader, uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB( mShader );
- glUniform1fARB( loc, value );
+ bgl::blUseProgramObjectARB( mShader );
+ bgl::blUniform1fARB( loc, value );
Py_Return;
}
@@ -486,6 +501,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform1f, "setUniform1f(name, fx)" )
KX_PYMETHODDEF_DOC( BL_Shader, setUniform2f , "setUniform2f(name, fx, fy)")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
float array[2]={ 0,0 };
if(PyArg_ParseTuple(args, "sff", &uniform, &array[0],&array[1] ))
@@ -495,15 +514,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform2f , "setUniform2f(name, fx, fy)")
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB( mShader );
- glUniform2fARB(loc, array[0],array[1] );
+ bgl::blUseProgramObjectARB( mShader );
+ bgl::blUniform2fARB(loc, array[0],array[1] );
Py_Return;
}
@@ -518,6 +537,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform2f , "setUniform2f(name, fx, fy)")
KX_PYMETHODDEF_DOC( BL_Shader, setUniform3f, "setUniform3f(name, fx,fy,fz) ")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
float array[3]={0,0,0};
if(PyArg_ParseTuple(args, "sfff", &uniform, &array[0],&array[1],&array[2]))
@@ -527,15 +550,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform3f, "setUniform3f(name, fx,fy,fz) ")
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB(mShader);
- glUniform3fARB(loc, array[0],array[1],array[2]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform3fARB(loc, array[0],array[1],array[2]);
Py_Return;
}
@@ -550,6 +573,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform3f, "setUniform3f(name, fx,fy,fz) ")
KX_PYMETHODDEF_DOC( BL_Shader, setUniform4f, "setUniform4f(name, fx,fy,fz, fw) ")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
float array[4]={0,0,0,0};
if(PyArg_ParseTuple(args, "sffff", &uniform, &array[0],&array[1],&array[2], &array[3]))
@@ -559,15 +586,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform4f, "setUniform4f(name, fx,fy,fz, fw) "
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB(mShader);
- glUniform4fARB(loc, array[0],array[1],array[2], array[3]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform4fARB(loc, array[0],array[1],array[2], array[3]);
Py_Return;
}
}
@@ -581,6 +608,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform4f, "setUniform4f(name, fx,fy,fz, fw) "
KX_PYMETHODDEF_DOC( BL_Shader, setUniform1i, "setUniform1i(name, ix)" )
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
int value=0;
if(PyArg_ParseTuple(args, "si", &uniform, &value ))
@@ -590,15 +621,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform1i, "setUniform1i(name, ix)" )
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader, uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader, uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB( mShader );
- glUniform1iARB( loc, value );
+ bgl::blUseProgramObjectARB( mShader );
+ bgl::blUniform1iARB( loc, value );
Py_Return;
}
}
@@ -612,6 +643,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform1i, "setUniform1i(name, ix)" )
KX_PYMETHODDEF_DOC( BL_Shader, setUniform2i , "setUniform2i(name, ix, iy)")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
int array[2]={ 0,0 };
if(PyArg_ParseTuple(args, "sii", &uniform, &array[0],&array[1] ))
@@ -621,15 +656,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform2i , "setUniform2i(name, ix, iy)")
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB( mShader );
- glUniform2iARB(loc, array[0],array[1] );
+ bgl::blUseProgramObjectARB( mShader );
+ bgl::blUniform2iARB(loc, array[0],array[1] );
Py_Return;
}
}
@@ -643,6 +678,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform2i , "setUniform2i(name, ix, iy)")
KX_PYMETHODDEF_DOC( BL_Shader, setUniform3i, "setUniform3i(name, ix,iy,iz) ")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
int array[3]={0,0,0};
if(PyArg_ParseTuple(args, "siii", &uniform, &array[0],&array[1],&array[2]))
@@ -652,15 +691,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform3i, "setUniform3i(name, ix,iy,iz) ")
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB(mShader);
- glUniform3iARB(loc, array[0],array[1],array[2]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform3iARB(loc, array[0],array[1],array[2]);
Py_Return;
}
}
@@ -673,6 +712,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform3i, "setUniform3i(name, ix,iy,iz) ")
KX_PYMETHODDEF_DOC( BL_Shader, setUniform4i, "setUniform4i(name, ix,iy,iz, iw) ")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char *uniform="";
int array[4]={0,0,0, 0};
if(PyArg_ParseTuple(args, "siiii", &uniform, &array[0],&array[1],&array[2], &array[3] ))
@@ -682,15 +725,15 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform4i, "setUniform4i(name, ix,iy,iz, iw) "
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
Py_Return;
}else
{
- glUseProgramObjectARB(mShader);
- glUniform4iARB(loc, array[0],array[1],array[2], array[3]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform4iARB(loc, array[0],array[1],array[2], array[3]);
Py_Return;
}
}
@@ -703,6 +746,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniform4i, "setUniform4i(name, ix,iy,iz, iw) "
KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or list3 or list4) )")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char*uniform = "";
PyObject *listPtr =0;
float array_data[4] = {0.f,0.f,0.f,0.f};
@@ -714,7 +761,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or lis
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
@@ -735,20 +782,20 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or lis
{
case 2:
{
- glUseProgramObjectARB(mShader);
- glUniform2fARB(loc, array_data[0],array_data[1]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform2fARB(loc, array_data[0],array_data[1]);
Py_Return;
} break;
case 3:
{
- glUseProgramObjectARB(mShader);
- glUniform3fARB(loc, array_data[0],array_data[1], array_data[2]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform3fARB(loc, array_data[0],array_data[1], array_data[2]);
Py_Return;
}break;
case 4:
{
- glUseProgramObjectARB(mShader);
- glUniform4fARB(loc, array_data[0],array_data[1], array_data[2], array_data[3]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform4fARB(loc, array_data[0],array_data[1], array_data[2], array_data[3]);
Py_Return;
}break;
default:
@@ -770,6 +817,10 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformfv , "setUniformfv( float (list2 or lis
KX_PYMETHODDEF_DOC( BL_Shader, setUniformiv, "setUniformiv( int (list2 or list3 or list4) )")
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
char*uniform = "";
PyObject *listPtr =0;
int array_data[4] = {0,0,0,0};
@@ -781,7 +832,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformiv, "setUniformiv( int (list2 or list3
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
@@ -802,20 +853,20 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformiv, "setUniformiv( int (list2 or list3
{
case 2:
{
- glUseProgramObjectARB(mShader);
- glUniform2iARB(loc, array_data[0],array_data[1]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform2iARB(loc, array_data[0],array_data[1]);
Py_Return;
} break;
case 3:
{
- glUseProgramObjectARB(mShader);
- glUniform3iARB(loc, array_data[0],array_data[1], array_data[2]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform3iARB(loc, array_data[0],array_data[1], array_data[2]);
Py_Return;
}break;
case 4:
{
- glUseProgramObjectARB(mShader);
- glUniform4iARB(loc, array_data[0],array_data[1], array_data[2], array_data[3]);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniform4iARB(loc, array_data[0],array_data[1], array_data[2], array_data[3]);
Py_Return;
}break;
default:
@@ -838,6 +889,11 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix4,
"setUniformMatrix4(uniform-name, mat-4x4, transpose(row-major=true, col-major=false)" )
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
float matr[16] = {
1,0,0,0,
0,1,0,0,
@@ -855,7 +911,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix4,
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
@@ -868,8 +924,8 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix4,
if (PyMatTo(matrix, mat))
{
mat.getValue(matr);
- glUseProgramObjectARB(mShader);
- glUniformMatrix4fvARB(loc, 1, (transp!=0)?GL_TRUE:GL_FALSE, matr);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniformMatrix4fvARB(loc, 1, (transp!=0)?GL_TRUE:GL_FALSE, matr);
Py_Return;
}
}
@@ -886,6 +942,11 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3,
"setUniformMatrix3(uniform-name, list[3x3], transpose(row-major=true, col-major=false)" )
{
#ifdef GL_ARB_shader_objects
+ if(mError) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+
float matr[9] = {
1,0,0,
0,1,0,
@@ -902,7 +963,7 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3,
PyErr_Format(PyExc_ValueError, "invalid shader object");
return NULL;
}
- int loc= glGetUniformLocationARB(mShader , uniform);
+ int loc= bgl::blGetUniformLocationARB(mShader , uniform);
if( loc==-1 )
{
spit("Invalid uniform value: " << uniform << ".");
@@ -915,8 +976,8 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3,
if (PyMatTo(matrix, mat))
{
mat.getValue(matr);
- glUseProgramObjectARB(mShader);
- glUniformMatrix3fvARB(loc, 1, (transp!=0)?GL_TRUE:GL_FALSE, matr);
+ bgl::blUseProgramObjectARB(mShader);
+ bgl::blUniformMatrix3fvARB(loc, 1, (transp!=0)?GL_TRUE:GL_FALSE, matr);
Py_Return;
}
}
@@ -927,16 +988,3 @@ KX_PYMETHODDEF_DOC( BL_Shader, setUniformMatrix3,
Py_Return;
#endif//GL_ARB_shader_objects
}
-
-
-KX_PYMETHODDEF_DOC( BL_Shader, setBlending, "setBlending(src, dest)" )
-{
- int src, dest;
- if(PyArg_ParseTuple(args, "ii", &src, &dest))
- {
- mBlending.src = src;
- mBlending.dest = dest;
- Py_Return;
- }
- return NULL;
-}
diff --git a/source/gameengine/Ketsji/BL_Shader.h b/source/gameengine/Ketsji/BL_Shader.h
index 2e08eeb0d70..25db6a0b9f4 100644
--- a/source/gameengine/Ketsji/BL_Shader.h
+++ b/source/gameengine/Ketsji/BL_Shader.h
@@ -18,17 +18,6 @@ typedef struct uSampler
#define SAMP_2D 1
#define SAMP_CUBE 2
-
-// -----------------------------------
-typedef struct uBlending
-{
- unsigned int pass;
- int src; // GL_ blend func values
- int dest;
- float const_color[4];
-}uBlending;
-// -----------------------------------
-
// ----------------
class BL_Shader : public PyObjectPlus
{
@@ -41,14 +30,15 @@ private:
bool mOk;
bool mUse;
uSampler mSampler[MAXTEX];
- uBlending mBlending;
char* vertProg;
char* fragProg;
- bool LinkProgram();
- bool PrintInfo(int len, unsigned int handle, const char *type);
+ bool mError;
+ char* mLog;
+ bool LinkProgram();
+ void PrintInfo( int len, unsigned int handle,int *num);
public:
- BL_Shader(int n, PyTypeObject *T=&Type);
+ BL_Shader(PyTypeObject *T=&Type);
virtual ~BL_Shader();
char* GetVertPtr();
@@ -59,11 +49,10 @@ public:
// ---
int getNumPass() {return mPass;}
bool use() {return mUse;}
-
+ bool GetError() {return mError;}
// ---
// access
const uSampler* getSampler(int i);
- const uBlending* getBlending( int pass );
const bool Ok()const;
unsigned int GetProg();
@@ -108,8 +97,6 @@ public:
// these come from within the material buttons
// sampler2d/samplerCube work
KX_PYMETHOD_DOC( BL_Shader, setSampler);
- // user blending funcs
- KX_PYMETHOD_DOC( BL_Shader, setBlending );
};
diff --git a/source/gameengine/Ketsji/BL_Texture.cpp b/source/gameengine/Ketsji/BL_Texture.cpp
index 0ed7a9c33cf..2b01d3df560 100644
--- a/source/gameengine/Ketsji/BL_Texture.cpp
+++ b/source/gameengine/Ketsji/BL_Texture.cpp
@@ -3,6 +3,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
@@ -20,7 +21,6 @@
#include "DNA_image_types.h"
#include "IMB_imbuf_types.h"
#include "BKE_image.h"
-//#include "IMB_imbuf.h"
#include "BLI_blenlib.h"
#include "RAS_GLExtensionManager.h"
@@ -35,6 +35,7 @@ using namespace bgl;
extern "C" {
// envmaps
#include "IMB_imbuf.h"
+
void my_envmap_split_ima(EnvMap *env);
void my_free_envmapdata(EnvMap *env);
}
@@ -345,18 +346,18 @@ void my_envmap_split_ima(EnvMap *env)
ima->ok= 1;
env->cube[part]= ima;
}
- IMB_rectcpy(env->cube[0]->ibuf, env->ima->ibuf,
- 0, 0, 0, 0, dx, dx);
- IMB_rectcpy(env->cube[1]->ibuf, env->ima->ibuf,
- 0, 0, dx, 0, dx, dx);
- IMB_rectcpy(env->cube[2]->ibuf, env->ima->ibuf,
- 0, 0, 2*dx, 0, dx, dx);
- IMB_rectcpy(env->cube[3]->ibuf, env->ima->ibuf,
- 0, 0, 0, dx, dx, dx);
- IMB_rectcpy(env->cube[4]->ibuf, env->ima->ibuf,
- 0, 0, dx, dx, dx, dx);
- IMB_rectcpy(env->cube[5]->ibuf, env->ima->ibuf,
- 0, 0, 2*dx, dx, dx, dx);
+ IMB_rectop(env->cube[0]->ibuf, env->ima->ibuf,
+ 0, 0, 0, 0, dx, dx, IMB_rectcpy, 0);
+ IMB_rectop(env->cube[1]->ibuf, env->ima->ibuf,
+ 0, 0, dx, 0, dx, dx, IMB_rectcpy, 0);
+ IMB_rectop(env->cube[2]->ibuf, env->ima->ibuf,
+ 0, 0, 2*dx, 0, dx, dx, IMB_rectcpy, 0);
+ IMB_rectop(env->cube[3]->ibuf, env->ima->ibuf,
+ 0, 0, 0, dx, dx, dx, IMB_rectcpy, 0);
+ IMB_rectop(env->cube[4]->ibuf, env->ima->ibuf,
+ 0, 0, dx, dx, dx, dx, IMB_rectcpy, 0);
+ IMB_rectop(env->cube[5]->ibuf, env->ima->ibuf,
+ 0, 0, 2*dx, dx, dx, dx, IMB_rectcpy, 0);
env->ok= 2;
}
}
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index ebf040d3c5d..429a9ea7a65 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -10,6 +10,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
@@ -22,6 +23,7 @@
#include "KX_Scene.h"
#include "KX_Light.h"
#include "KX_GameObject.h"
+#include "KX_MeshProxy.h"
#include "MT_Vector3.h"
#include "MT_Vector4.h"
@@ -75,7 +77,10 @@ KX_BlenderMaterial::KX_BlenderMaterial(
mMaterial(data),
mShader(0),
mScene(scene),
+ mUserDefBlend(0),
+ mModified(0),
mPass(0)
+
{
///RAS_EXT_support._ARB_multitexture == true if were here
@@ -101,8 +106,8 @@ KX_BlenderMaterial::KX_BlenderMaterial(
// prevent material bleeding
for(int i=0; i<mMaterial->num_enabled; i++) {
m_multimode +=
- (mMaterial->flag[i] +
- mMaterial->blend_mode[i]
+ ( mMaterial->flag[i] +
+ mMaterial->blend_mode[i]
);
}
m_multimode += mMaterial->IdMode+mMaterial->ras_mode;
@@ -132,14 +137,9 @@ void KX_BlenderMaterial::OnConstruction()
if(!gTextureDict)
gTextureDict = PyDict_New();
*/
- #ifdef GL_ARB_shader_objects
- if( RAS_EXT_support._ARB_shader_objects )
- mShader = new BL_Shader( mMaterial->num_enabled );
- #endif
-
int i;
for(i=0; i<mMaterial->num_enabled; i++) {
- glActiveTextureARB(GL_TEXTURE0_ARB+i);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
#ifdef GL_ARB_texture_cube_map
if( mMaterial->mapping[i].mapping & USEENV ) {
if(!RAS_EXT_support._ARB_texture_cube_map) {
@@ -149,9 +149,6 @@ void KX_BlenderMaterial::OnConstruction()
if(!mTextures[i].InitCubeMap( mMaterial->cubemap[i] ) )
spit("unable to initialize image("<<i<<") in "<<
mMaterial->matname<< ", image will not be available");
-
- if( RAS_EXT_support._ARB_shader_objects )
- mShader->InitializeSampler(SAMP_CUBE, i, 0, mTextures[i]);
}
else {
@@ -160,9 +157,6 @@ void KX_BlenderMaterial::OnConstruction()
if( ! mTextures[i].InitFromImage(mMaterial->img[i], (mMaterial->flag[i] &MIPMAP)!=0 ))
spit("unable to initialize image("<<i<<") in "<<
mMaterial->matname<< ", image will not be available");
-
- if( RAS_EXT_support._ARB_shader_objects )
- mShader->InitializeSampler(SAMP_2D, i, 0, mTextures[i]);
}
#ifdef GL_ARB_texture_cube_map
}
@@ -170,24 +164,27 @@ void KX_BlenderMaterial::OnConstruction()
/*PyDict_SetItemString(gTextureDict, mTextures[i].GetName().Ptr(), PyInt_FromLong(mTextures[i]));*/
}
#endif//GL_ARB_multitexture
+
+ mBlendFunc[0] =0;
+ mBlendFunc[1] =0;
}
void KX_BlenderMaterial::OnExit()
{
#ifdef GL_ARB_multitexture
-
+
#ifdef GL_ARB_shader_objects
if( RAS_EXT_support._ARB_shader_objects && mShader ) {
//note, the shader here is allocated, per unique material
//and this function is called per face
- glUseProgramObjectARB(0);
+ bgl::blUseProgramObjectARB(0);
delete mShader;
mShader = 0;
}
#endif //GL_ARB_shader_objects
for(int i=0; i<mMaterial->num_enabled; i++) {
- glActiveTextureARB(GL_TEXTURE0_ARB+i);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
mTextures[i].DeleteTex();
@@ -213,7 +210,7 @@ void KX_BlenderMaterial::OnExit()
gTextureDict = 0;
}*/
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB);
#ifdef GL_ARB_texture_cube_map
if(RAS_EXT_support._ARB_texture_cube_map)
@@ -238,7 +235,7 @@ void KX_BlenderMaterial::DisableTexData()
#ifdef GL_ARB_multitexture
int i=(MAXTEX>=bgl::max_texture_units?bgl::max_texture_units:MAXTEX)-1;
for(; i>=0; i--) {
- glActiveTextureARB(GL_TEXTURE0_ARB+i);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
@@ -268,13 +265,13 @@ void KX_BlenderMaterial::setShaderData( bool enable )
int i;
if( !enable || !mShader->Ok() ) {
// frame cleanup.
- glUseProgramObjectARB( 0 );
+ bgl::blUseProgramObjectARB( 0 );
DisableTexData();
return;
}
DisableTexData();
- glUseProgramObjectARB( mShader->GetProg() );
+ bgl::blUseProgramObjectARB( mShader->GetProg() );
// for each enabled unit
for(i=0; i<mMaterial->num_enabled; i++) {
@@ -282,7 +279,7 @@ void KX_BlenderMaterial::setShaderData( bool enable )
const uSampler *samp = mShader->getSampler(i);
if( samp->loc == -1 || samp->glTexture == 0 ) continue;
- glActiveTextureARB(GL_TEXTURE0_ARB+i);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
#ifdef GL_ARB_texture_cube_map
if( mMaterial->mapping[i].mapping &USEENV ) {
@@ -297,9 +294,17 @@ void KX_BlenderMaterial::setShaderData( bool enable )
}
#endif//GL_ARB_texture_cube_map
// use a sampler
- glUniform1iARB(samp->loc, i );
+ bgl::blUniform1iARB(samp->loc, i );
+ }
+
+ if(!mUserDefBlend) {
+ setDefaultBlending();
+ }else
+ {
+ glEnable(GL_BLEND);
+ // tested to be valid enums
+ glBlendFunc(mBlendFunc[0], mBlendFunc[1]);
}
- glDisable(GL_BLEND);
#endif//GL_ARB_shader_objects
#endif//GL_ARB_multitexture
@@ -314,7 +319,7 @@ void KX_BlenderMaterial::setTexData( bool enable )
#ifdef GL_ARB_shader_objects
if(RAS_EXT_support._ARB_shader_objects) {
// switch back to fixed func
- glUseProgramObjectARB( 0 );
+ bgl::blUseProgramObjectARB( 0 );
}
#endif//GL_ARB_shader_objects
@@ -336,7 +341,7 @@ void KX_BlenderMaterial::setTexData( bool enable )
// no material connected to the object
if( mTextures[0] ) {
if( !mTextures[0].Ok() ) return;
- glActiveTextureARB(GL_TEXTURE0_ARB);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture( GL_TEXTURE_2D, mTextures[0] );
glEnable(GL_TEXTURE_2D);
setTextureEnvironment( -1 ); // modulate
@@ -352,7 +357,7 @@ void KX_BlenderMaterial::setTexData( bool enable )
for(i=0; (i<mMaterial->num_enabled); i++) {
if( !mTextures[i].Ok() ) continue;
- glActiveTextureARB(GL_TEXTURE0_ARB+i);
+ bgl::blActiveTextureARB(GL_TEXTURE0_ARB+i);
#ifdef GL_ARB_texture_cube_map
// use environment maps
@@ -388,15 +393,16 @@ void KX_BlenderMaterial::setTexData( bool enable )
#ifdef GL_ARB_texture_cube_map
}
#endif//GL_ARB_texture_cube_map
-
- // if either unit has set blending
- // and its the last pass
- lastblend += setBlending( i ); // dry run
- if(lastblend >0 && i==mMaterial->num_enabled-1)
- setBlending( i, true );
- else if(lastblend == 0 && i==mMaterial->num_enabled-1)
- glDisable(GL_BLEND);
}
+ if(!mUserDefBlend) {
+ setDefaultBlending();
+ }else
+ {
+ glEnable(GL_BLEND);
+ // tested to be valid enums
+ glBlendFunc(mBlendFunc[0], mBlendFunc[1]);
+ }
+
#endif//GL_ARB_multitexture
}
@@ -548,7 +554,7 @@ KX_BlenderMaterial::Activate(
return dopass;
}
else {
- glUseProgramObjectARB( 0 );
+ bgl::blUseProgramObjectARB( 0 );
mPass = 0;
dopass = false;
return dopass;
@@ -587,9 +593,8 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE_ARB );
GLfloat blend_operand = GL_SRC_COLOR;
- GLfloat blend_operand_prev = GL_SRC_COLOR;
+ GLfloat blend_operand_prev = GL_SRC_COLOR;
- // all sources here are RGB by default
GLenum combiner = GL_COMBINE_RGB_ARB;
GLenum source0 = GL_SOURCE0_RGB_ARB;
GLenum source1 = GL_SOURCE1_RGB_ARB;
@@ -597,6 +602,7 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
GLenum op0 = GL_OPERAND0_RGB_ARB;
GLenum op1 = GL_OPERAND1_RGB_ARB;
GLenum op2 = GL_OPERAND2_RGB_ARB;
+ GLfloat alphaOp = GL_SRC_ALPHA;
// switch to alpha combiners
if( (mMaterial->flag[textureIndex] &TEXALPHA) ) {
@@ -608,7 +614,6 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
op1 = GL_OPERAND1_ALPHA_ARB;
op2 = GL_OPERAND2_ALPHA_ARB;
blend_operand = GL_SRC_ALPHA;
- blend_operand_prev = GL_SRC_ALPHA;
// invert
if(mMaterial->flag[textureIndex] &TEXNEG) {
@@ -618,27 +623,42 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
}
else {
if(mMaterial->flag[textureIndex] &TEXNEG) {
- blend_operand_prev = GL_ONE_MINUS_SRC_COLOR;
+ blend_operand_prev=GL_ONE_MINUS_SRC_COLOR;
blend_operand = GL_ONE_MINUS_SRC_COLOR;
}
}
- // on Texture0 GL_PREVIOUS_ARB is the primary color
- // on Texture1 GL_PREVIOUS_ARB is Texture0 env
+ bool using_alpha = false;
+
+ if(mMaterial->flag[textureIndex] &USEALPHA){
+ alphaOp = GL_ONE_MINUS_SRC_ALPHA;
+ using_alpha=true;
+ }
+ else if(mMaterial->flag[textureIndex] &USENEGALPHA){
+ alphaOp = GL_SRC_ALPHA;
+ using_alpha = true;
+ }
+
switch( mMaterial->blend_mode[textureIndex] ) {
case BLEND_MIX:
{
// ------------------------------
- GLfloat base_col[4];
- base_col[0] = base_col[1] = base_col[2] = 0.f;
- base_col[3] = 1.f-mMaterial->color_blend[textureIndex];
- glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR,base_col );
+ if(!using_alpha) {
+ GLfloat base_col[4];
+ base_col[0] = base_col[1] = base_col[2] = 0.f;
+ base_col[3] = 1.f-mMaterial->color_blend[textureIndex];
+ glTexEnvfv( GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR,base_col );
+ }
glTexEnvf( GL_TEXTURE_ENV, combiner, GL_INTERPOLATE_ARB);
glTexEnvf( GL_TEXTURE_ENV, source0, GL_PREVIOUS_ARB);
glTexEnvf( GL_TEXTURE_ENV, op0, blend_operand_prev );
glTexEnvf( GL_TEXTURE_ENV, source1, GL_TEXTURE );
glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand);
- glTexEnvf( GL_TEXTURE_ENV, source2, GL_CONSTANT_ARB );
- glTexEnvf( GL_TEXTURE_ENV, op2, GL_SRC_ALPHA);
+ if(!using_alpha)
+ glTexEnvf( GL_TEXTURE_ENV, source2, GL_CONSTANT_ARB );
+ else
+ glTexEnvf( GL_TEXTURE_ENV, source2, GL_TEXTURE );
+
+ glTexEnvf( GL_TEXTURE_ENV, op2, alphaOp);
}break;
case BLEND_MUL:
{
@@ -647,7 +667,10 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
glTexEnvf( GL_TEXTURE_ENV, source0, GL_PREVIOUS_ARB);
glTexEnvf( GL_TEXTURE_ENV, op0, blend_operand_prev);
glTexEnvf( GL_TEXTURE_ENV, source1, GL_TEXTURE );
- glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand);
+ if(using_alpha)
+ glTexEnvf( GL_TEXTURE_ENV, op1, alphaOp);
+ else
+ glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand);
}break;
case BLEND_ADD:
{
@@ -656,7 +679,10 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
glTexEnvf( GL_TEXTURE_ENV, source0, GL_PREVIOUS_ARB );
glTexEnvf( GL_TEXTURE_ENV, op0, blend_operand_prev );
glTexEnvf( GL_TEXTURE_ENV, source1, GL_TEXTURE );
- glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand );
+ if(using_alpha)
+ glTexEnvf( GL_TEXTURE_ENV, op1, alphaOp);
+ else
+ glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand);
}break;
case BLEND_SUB:
{
@@ -674,37 +700,16 @@ void KX_BlenderMaterial::setTextureEnvironment( int textureIndex )
glTexEnvf( GL_TEXTURE_ENV, source0, GL_PREVIOUS_ARB );
glTexEnvf( GL_TEXTURE_ENV, op0, blend_operand_prev );
glTexEnvf( GL_TEXTURE_ENV, source1, GL_TEXTURE );
- glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand);
+ if(using_alpha)
+ glTexEnvf( GL_TEXTURE_ENV, op1, alphaOp);
+ else
+ glTexEnvf( GL_TEXTURE_ENV, op1, blend_operand);
} break;
}
+ glTexEnvf( GL_TEXTURE_ENV, GL_RGB_SCALE_ARB, 1.0);
#endif //!GL_ARB_texture_env_combine
}
-bool KX_BlenderMaterial::setBlending( int ind, bool enable)
-{
- if(!enable) {
- if(mMaterial->flag[ind] &CALCALPHA ) return true;
- else if(mMaterial->flag[ind] &USEALPHA ) return true;
- return false;
- }
- else {
- // additive
- if(mMaterial->flag[ind] &CALCALPHA ) {
- glEnable(GL_BLEND);
- glBlendFunc(GL_ONE, GL_ONE);
- return true;
- }
-
- // use alpha channel
- else if(mMaterial->flag[ind] &USEALPHA ) {
- glEnable(GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- return true;
- }
- }
- return false;
-}
-
bool KX_BlenderMaterial::setDefaultBlending()
{
if( mMaterial->transp &TF_ADD) {
@@ -873,6 +878,7 @@ PyMethodDef KX_BlenderMaterial::Methods[] =
{
KX_PYMETHODTABLE( KX_BlenderMaterial, getShader ),
KX_PYMETHODTABLE( KX_BlenderMaterial, getMaterialIndex ),
+ KX_PYMETHODTABLE( KX_BlenderMaterial, setBlending ),
// KX_PYMETHODTABLE( KX_BlenderMaterial, getTexture ),
// KX_PYMETHODTABLE( KX_BlenderMaterial, setTexture ),
@@ -914,20 +920,78 @@ int KX_BlenderMaterial::_setattr(const STR_String& attr, PyObject *pyvalue)
return PyObjectPlus::_setattr(attr, pyvalue);
}
+
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
{
- #ifdef GL_ARB_shader_objects
- if(!RAS_EXT_support._ARB_shader_objects) {
- PyErr_Format(PyExc_SystemError, "GLSL not supported");
- return NULL;
+#ifdef GL_ARB_fragment_shader
+ if( !RAS_EXT_support._ARB_fragment_shader) {
+ if(!mModified)
+ spit("Fragment shaders not supported");
+
+ mModified = true;
+ Py_Return;
+ }
+#endif
+
+#ifdef GL_ARB_vertex_shader
+ if( !RAS_EXT_support._ARB_vertex_shader) {
+ if(!mModified)
+ spit("Vertex shaders not supported");
+
+ mModified = true;
+ Py_Return;
+ }
+#endif
+
+#ifdef GL_ARB_shader_objects
+ if(!RAS_EXT_support._ARB_shader_objects) {
+ if(!mModified)
+ spit("GLSL not supported");
+ mModified = true;
+ Py_Return;
}
else {
- Py_INCREF(mShader);
- return mShader;
+ // returns Py_None on error
+ // the calling script will need to check
+
+ if(!mShader && !mModified) {
+ mShader = new BL_Shader();
+ for(int i= 0; i<mMaterial->num_enabled; i++) {
+ if(mMaterial->mapping[i].mapping & USEENV )
+ mShader->InitializeSampler(SAMP_CUBE, i, 0, mTextures[i]);
+ else
+ mShader->InitializeSampler(SAMP_2D, i, 0, mTextures[i]);
+ }
+ mModified = true;
+ }
+
+ if(mShader && !mShader->GetError()) {
+ Py_INCREF(mShader);
+ return mShader;
+ }else
+ {
+ // decref all references to the object
+ // then delete it!
+ // We will then go back to fixed functionality
+ // for this material
+ if(mShader) {
+ if(mShader->ob_refcnt > 1) {
+ Py_DECREF(mShader);
+ }
+ else {
+ delete mShader;
+ mShader=0;
+ }
+ }
+ }
+ Py_Return;
}
- #else
+ PyErr_Format(PyExc_ValueError, "GLSL Error");
+ return NULL;
+
+#else
Py_Return;
- #endif//GL_ARB_shader_objects
+#endif//GL_ARB_shader_objects
}
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getMaterialIndex, "getMaterialIndex()")
@@ -947,3 +1011,45 @@ KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setTexture , "setTexture( index, tex)")
return NULL;
}
+static unsigned int GL_array[11] = {
+ GL_ZERO,
+ GL_ONE,
+ GL_SRC_COLOR,
+ GL_ONE_MINUS_SRC_COLOR,
+ GL_DST_COLOR,
+ GL_ONE_MINUS_DST_COLOR,
+ GL_SRC_ALPHA,
+ GL_ONE_MINUS_SRC_ALPHA,
+ GL_DST_ALPHA,
+ GL_ONE_MINUS_DST_ALPHA,
+ GL_SRC_ALPHA_SATURATE
+};
+
+KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setBlending , "setBlending( GameLogic.src, GameLogic.dest)")
+{
+ unsigned int b[2];
+ if(PyArg_ParseTuple(args, "ii", &b[0], &b[1]))
+ {
+ bool value_found[2] = {false, false};
+ for(int i=0; i<11; i++)
+ {
+ if(b[0] == GL_array[i]) {
+ value_found[0] = true;
+ mBlendFunc[0] = b[0];
+ }
+ if(b[1] == GL_array[i]) {
+ value_found[1] = true;
+ mBlendFunc[1] = b[1];
+ }
+ if(value_found[0] && value_found[1]) break;
+ }
+ if(!value_found[0] || !value_found[1]) {
+ PyErr_Format(PyExc_ValueError, "invalid enum.");
+ return NULL;
+ }
+ mUserDefBlend = true;
+ Py_Return;
+ }
+ return NULL;
+}
+
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index 57348144890..a250dcf81c4 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -72,6 +72,7 @@ public:
KX_PYMETHOD_DOC( KX_BlenderMaterial, getTexture );
KX_PYMETHOD_DOC( KX_BlenderMaterial, setTexture );
+ KX_PYMETHOD_DOC( KX_BlenderMaterial, setBlending );
// --------------------------------
// pre calculate to avoid pops/lag at startup
virtual void OnConstruction( );
@@ -82,6 +83,10 @@ private:
KX_Scene* mScene;
BL_Texture mTextures[MAXTEX]; // texture array
+ bool mUserDefBlend;
+ unsigned int mBlendFunc[2];
+ bool mModified;
+
// message centers
void setTexData( bool enable );
void setShaderData( bool enable );
@@ -90,7 +95,6 @@ private:
void setEnvMap( bool val, bool cube=false);
void setTexMatrixData(int i);
bool setDefaultBlending();
- bool setBlending( int ind, bool enable=false );
void setObjectMatrixData(int i);
// cleanup stuff
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 022c5d0c3ee..41bece58e84 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -127,8 +127,10 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_firstframe(true),
- m_previoustime(0.0),
- m_deltatime(0.0),
+ m_frameTime(0.f),
+ m_clockTime(0.f),
+ m_previousClockTime(0.f),
+
m_exitcode(KX_EXIT_REQUEST_NO_REQUEST),
m_exitstring(""),
@@ -258,13 +260,19 @@ void KX_KetsjiEngine::SetSceneConverter(KX_ISceneConverter* sceneconverter)
*/
void KX_KetsjiEngine::StartEngine()
{
- m_previoustime = m_kxsystem->GetTimeInSeconds();
+ m_clockTime = m_kxsystem->GetTimeInSeconds();
+ m_frameTime = m_kxsystem->GetTimeInSeconds();
+ m_previousClockTime = m_kxsystem->GetTimeInSeconds();
+
m_firstframe = true;
m_bInitialized = true;
m_ticrate = DEFAULT_LOGIC_TIC_RATE;
m_currentFrame = 0;
- m_sceneconverter->ResetPhysicsObjectsAnimationIpo();
+ if (m_game2ipo)
+ {
+ m_sceneconverter->ResetPhysicsObjectsAnimationIpo();
+ }
}
@@ -317,33 +325,32 @@ void KX_KetsjiEngine::EndFrame()
}
-
+#include "PIL_time.h"
void KX_KetsjiEngine::NextFrame()
{
m_logger->StartLog(tc_services, m_kxsystem->GetTimeInSeconds(), true);
-
- double curtime;
+
if (m_bFixedTime)
- curtime = m_previoustime + 1.0/m_ticrate;
+ m_clockTime += 1.0/m_ticrate;
else
- curtime = m_kxsystem->GetTimeInSeconds();
- m_deltatime += curtime - m_previoustime;
- float realDeltaTime = curtime - m_previoustime;
-
+ m_clockTime = m_kxsystem->GetTimeInSeconds();
- double localtime = curtime - m_deltatime;
+ double deltatime = m_clockTime - m_frameTime;
// Compute the number of logic frames to do each update (fixed tic bricks)
- int frames = (int) (m_deltatime*m_ticrate);
- m_deltatime -= double(frames)/m_ticrate;
+ int frames =int(deltatime*m_ticrate);
+
+// if (!frames)
+// PIL_sleep_ms(4);
KX_SceneList::iterator sceneit;
while (frames)
{
- localtime += 1.0/m_ticrate;
+ m_frameTime += 1.0/m_ticrate;
+
for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); ++sceneit)
// for each scene, call the proceed functions
{
@@ -361,15 +368,15 @@ void KX_KetsjiEngine::NextFrame()
// if the scene was suspended recalcutlate the delta tu "curtime"
m_suspendedtime = scene->getSuspendedTime();
if (scene->getSuspendedTime()!=0.0)
- scene->setSuspendedDelta(scene->getSuspendedDelta()+curtime-scene->getSuspendedTime());
+ scene->setSuspendedDelta(scene->getSuspendedDelta()+m_clockTime-scene->getSuspendedTime());
m_suspendeddelta = scene->getSuspendedDelta();
m_logger->StartLog(tc_network, m_kxsystem->GetTimeInSeconds(), true);
- scene->GetNetworkScene()->proceed(localtime);
+ scene->GetNetworkScene()->proceed(m_frameTime);
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(localtime);
+ scene->UpdateParents(m_frameTime);
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
// set Python hooks for each scene
@@ -381,36 +388,39 @@ void KX_KetsjiEngine::NextFrame()
// Update scenegraph after physics step. This maps physics calculations
// into node positions.
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(localtime);
+ scene->UpdateParents(m_frameTime);
// Process sensors, and controllers
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
- scene->LogicBeginFrame(localtime);
+ scene->LogicBeginFrame(m_frameTime);
// Scenegraph needs to be updated again, because Logic Controllers
// can affect the local matrices.
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(localtime);
+ scene->UpdateParents(m_frameTime);
// Process actuators
// Do some cleanup work for this logic frame
m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
- scene->LogicUpdateFrame(localtime, true);
+ scene->LogicUpdateFrame(m_frameTime, true);
scene->LogicEndFrame();
// Actuators can affect the scenegraph
m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(localtime);
+ scene->UpdateParents(m_frameTime);
m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
scene->GetPhysicsEnvironment()->beginFrame();
// Perform physics calculations on the scene. This can involve
// many iterations of the physics solver.
- scene->GetPhysicsEnvironment()->proceedDeltaTime(localtime,realDeltaTime);
- m_previoustime = curtime;
+ scene->GetPhysicsEnvironment()->proceedDeltaTime(m_frameTime,1.0/m_ticrate);//m_deltatimerealDeltaTime);
+ m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ scene->UpdateParents(m_frameTime);
+
+
if (m_game2ipo)
{
m_sceneconverter->WritePhysicsObjectToAnimationIpo(m_currentFrame++);
@@ -420,7 +430,7 @@ void KX_KetsjiEngine::NextFrame()
} // suspended
else
if(scene->getSuspendedTime()==0.0)
- scene->setSuspendedTime(curtime);
+ scene->setSuspendedTime(m_clockTime);
DoSound(scene);
@@ -447,55 +457,63 @@ void KX_KetsjiEngine::NextFrame()
frames--;
}
- // Logic update sub frame: this will let some logic bricks run at the
- // full frame rate.
- for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); ++sceneit)
- // for each scene, call the proceed functions
- {
- KX_Scene* scene = *sceneit;
+ bool bUseAsyncLogicBricks= false;
- if (!scene->IsSuspended())
+ if (bUseAsyncLogicBricks)
+ {
+ // Logic update sub frame: this will let some logic bricks run at the
+ // full frame rate.
+ for (sceneit = m_scenes.begin();sceneit != m_scenes.end(); ++sceneit)
+ // for each scene, call the proceed functions
{
- // if the scene was suspended recalcutlate the delta tu "curtime"
- m_suspendedtime = scene->getSuspendedTime();
- if (scene->getSuspendedTime()!=0.0)
- scene->setSuspendedDelta(scene->getSuspendedDelta()+curtime-scene->getSuspendedTime());
- m_suspendeddelta = scene->getSuspendedDelta();
-
- // set Python hooks for each scene
- PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment());
- PHY_SetActiveScene(scene);
-
- m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(curtime);
-
- // Perform physics calculations on the scene. This can involve
- // many iterations of the physics solver.
- m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
- scene->GetPhysicsEnvironment()->proceedDeltaTime(curtime,0.f);
- // Update scenegraph after physics step. This maps physics calculations
- // into node positions.
- m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(curtime);
-
- // Do some cleanup work for this logic frame
- m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
- scene->LogicUpdateFrame(curtime, false);
+ KX_Scene* scene = *sceneit;
+
+ if (!scene->IsSuspended())
+ {
+ // if the scene was suspended recalcutlate the delta tu "curtime"
+ m_suspendedtime = scene->getSuspendedTime();
+ if (scene->getSuspendedTime()!=0.0)
+ scene->setSuspendedDelta(scene->getSuspendedDelta()+m_clockTime-scene->getSuspendedTime());
+ m_suspendeddelta = scene->getSuspendedDelta();
+
+ // set Python hooks for each scene
+ PHY_SetActiveEnvironment(scene->GetPhysicsEnvironment());
+ PHY_SetActiveScene(scene);
+
+ m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ scene->UpdateParents(m_clockTime);
- // Actuators can affect the scenegraph
- m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
- scene->UpdateParents(curtime);
-
- scene->setSuspendedTime(0.0);
- } // suspended
- else
- if(scene->getSuspendedTime()==0.0)
- scene->setSuspendedTime(curtime);
+ // Perform physics calculations on the scene. This can involve
+ // many iterations of the physics solver.
+ m_logger->StartLog(tc_physics, m_kxsystem->GetTimeInSeconds(), true);
+ scene->GetPhysicsEnvironment()->proceedDeltaTime(m_clockTime,0.f);
+ // Update scenegraph after physics step. This maps physics calculations
+ // into node positions.
+ m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ scene->UpdateParents(m_clockTime);
+
+ // Do some cleanup work for this logic frame
+ m_logger->StartLog(tc_logic, m_kxsystem->GetTimeInSeconds(), true);
+ scene->LogicUpdateFrame(m_clockTime, false);
- DoSound(scene);
+ // Actuators can affect the scenegraph
+ m_logger->StartLog(tc_scenegraph, m_kxsystem->GetTimeInSeconds(), true);
+ scene->UpdateParents(m_clockTime);
+
+ scene->setSuspendedTime(0.0);
+ } // suspended
+ else
+ if(scene->getSuspendedTime()==0.0)
+ scene->setSuspendedTime(m_clockTime);
- m_logger->StartLog(tc_services, m_kxsystem->GetTimeInSeconds(), true);
+ DoSound(scene);
+
+ m_logger->StartLog(tc_services, m_kxsystem->GetTimeInSeconds(), true);
+ }
}
+
+
+ m_previousClockTime = m_clockTime;
// Start logging time spend outside main loop
m_logger->StartLog(tc_outside, m_kxsystem->GetTimeInSeconds(), true);
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.h b/source/gameengine/Ketsji/KX_KetsjiEngine.h
index bea558e4427..c476cdb5894 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.h
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.h
@@ -99,8 +99,10 @@ private:
bool m_firstframe;
int m_currentFrame;
- double m_previoustime;
- double m_deltatime;
+ double m_frameTime;//discrete timestamp of the 'game logic frame'
+ double m_clockTime;//current time
+ double m_previousClockTime;//previous clock time
+
static double m_ticrate;
static double m_suspendedtime;
diff --git a/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp b/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
index 2317f9c3a9c..0e7ebc6442e 100644
--- a/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
+++ b/source/gameengine/Ketsji/KX_PyConstraintBinding.cpp
@@ -362,7 +362,7 @@ static PyObject* gPyRemoveConstraint(PyObject* self,
{
if (PHY_GetActiveEnvironment())
{
- PHY_GetActiveEnvironment()->removeConstraint((void *)constraintid);
+ PHY_GetActiveEnvironment()->removeConstraint(constraintid);
}
}
Py_INCREF(Py_None); return Py_None;
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index e2a11c0035e..6f7b73ee4fa 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -39,6 +39,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
@@ -277,39 +278,74 @@ static PyObject *pyPrintExt(PyObject *,PyObject *,PyObject *)
#define pprint(x) std::cout << x << std::endl;
bgl::BL_EXTInfo ext = bgl::RAS_EXT_support;
bool count=0;
+ bool support=0;
pprint("Supported Extensions...");
- #ifdef GL_ARB_shader_objects
- pprint(" GL_ARB_shader_objects supported? "<< (ext._ARB_shader_objects? "yes.":"no."));
+#ifdef GL_ARB_shader_objects
+ pprint(" GL_ARB_shader_objects supported? "<< (ext._ARB_shader_objects?"yes.":"no."));
count = 1;
- #endif
- #ifdef GL_ARB_vertex_shader
- pprint(" GL_ARB_vertex_shader supported? "<< (ext._ARB_vertex_shader? "yes.":"no."));
- count = 1;
- #endif
- #ifdef GL_ARB_fragment_shader
- pprint(" GL_ARB_fragment_shader supported? "<< (ext._ARB_fragment_shader? "yes.":"no."));
- count = 1;
- #endif
- #ifdef GL_ARB_texture_cube_map
- pprint(" GL_ARB_texture_cube_map supported? "<< (ext._ARB_texture_cube_map? "yes.":"no."));
+#endif
+
+#ifdef GL_ARB_vertex_shader
+ support= ext._ARB_vertex_shader;
+ pprint(" GL_ARB_vertex_shader supported? "<< (support?"yes.":"no."));
count = 1;
- #endif
- #ifdef GL_EXT_texture3D
- pprint(" GL_EXT_texture3D supported? "<< (ext._EXT_texture3D? "yes.":"no."));
+ if(support){
+ pprint(" ----------Details----------");
+ int max=0;
+ glGetIntegerv(GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB, (GLint*)&max);
+ pprint(" Max uniform components." << max);
+
+ glGetIntegerv(GL_MAX_VARYING_FLOATS_ARB, (GLint*)&max);
+ pprint(" Max varying floats." << max);
+
+ glGetIntegerv(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB, (GLint*)&max);
+ pprint(" Max vertex texture units." << max);
+
+ glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, (GLint*)&max);
+ pprint(" Max combined texture units." << max);
+ pprint("");
+ }
+#endif
+#ifdef GL_ARB_fragment_shader
+ support=ext._ARB_fragment_shader;
+ pprint(" GL_ARB_fragment_shader supported? "<< (support?"yes.":"no."));
count = 1;
- #endif
- #ifdef GL_EXT_blend_color
- pprint(" GL_EXT_blend_color supported? "<< (ext._EXT_blend_color? "yes.":"no."));
+ if(support){
+ pprint(" ----------Details----------");
+ int max=0;
+ glGetIntegerv(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB, (GLint*)&max);
+ pprint(" Max uniform components." << max);
+ pprint("");
+ }
+#endif
+#ifdef GL_ARB_texture_cube_map
+ support = ext._ARB_texture_cube_map;
+ pprint(" GL_ARB_texture_cube_map supported? "<< (support?"yes.":"no."));
count = 1;
- #endif
- #ifdef GL_ARB_multitexture
- pprint(" GL_ARB_multitexture supported? "<< (ext._ARB_multitexture? "yes.":"no."));
+ if(support){
+ pprint(" ----------Details----------");
+ int size=0;
+ glGetIntegerv(GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB, (GLint*)&size);
+ pprint(" Max cubemap size." << size);
+ pprint("");
+ }
+#endif
+#ifdef GL_ARB_multitexture
+ support = ext._ARB_multitexture;
count = 1;
- #endif
- #ifdef GL_ARB_texture_env_combine
- pprint(" GL_ARB_texture_env_combine supported? "<< (ext._ARB_texture_env_combine? "yes.":"no."));
+ pprint(" GL_ARB_multitexture supported? "<< (support?"yes.":"no."));
+ if(support){
+ pprint(" ----------Details----------");
+ int units=0;
+ glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, (GLint*)&units);
+ pprint(" Max texture units available. " << units);
+ pprint("");
+ }
+#endif
+#ifdef GL_ARB_texture_env_combine
+ pprint(" GL_ARB_texture_env_combine supported? "<< (ext._ARB_texture_env_combine?"yes.":"no."));
count = 1;
- #endif
+#endif
if(!count)
pprint("No extenstions are used in this build");
@@ -707,6 +743,19 @@ PyObject* initGameLogic(KX_Scene* scene) // quick hack to get gravity hook
KX_MACRO_addTypesToDict(d, KX_ACTIONACT_LOOPEND, BL_ActionActuator::KX_ACT_ACTION_LOOPEND);
KX_MACRO_addTypesToDict(d, KX_ACTIONACT_PROPERTY, BL_ActionActuator::KX_ACT_ACTION_PROPERTY);
+ /*8. GL_BlendFunc */
+ KX_MACRO_addTypesToDict(d, BL_ZERO, GL_ZERO);
+ KX_MACRO_addTypesToDict(d, BL_ONE, GL_ONE);
+ KX_MACRO_addTypesToDict(d, BL_SRC_COLOR, GL_SRC_COLOR);
+ KX_MACRO_addTypesToDict(d, BL_ONE_MINUS_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
+ KX_MACRO_addTypesToDict(d, BL_DST_COLOR, GL_DST_COLOR);
+ KX_MACRO_addTypesToDict(d, BL_ONE_MINUS_DST_COLOR, GL_ONE_MINUS_DST_COLOR);
+ KX_MACRO_addTypesToDict(d, BL_SRC_ALPHA, GL_SRC_ALPHA);
+ KX_MACRO_addTypesToDict(d, BL_ONE_MINUS_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+ KX_MACRO_addTypesToDict(d, BL_DST_ALPHA, GL_DST_ALPHA);
+ KX_MACRO_addTypesToDict(d, BL_ONE_MINUS_DST_ALPHA, GL_ONE_MINUS_DST_ALPHA);
+ KX_MACRO_addTypesToDict(d, BL_SRC_ALPHA_SATURATE, GL_SRC_ALPHA_SATURATE);
+
// Check for errors
if (PyErr_Occurred())
{
diff --git a/source/gameengine/Ketsji/Makefile b/source/gameengine/Ketsji/Makefile
index 963031d9686..ee0b1e42f22 100644
--- a/source/gameengine/Ketsji/Makefile
+++ b/source/gameengine/Ketsji/Makefile
@@ -39,6 +39,7 @@ include nan_compile.mk
CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
CPPFLAGS += $(OGL_CPPFLAGS)
+CPPFLAGS += -I$(OPENGL_HEADERS)
CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION) -I../../blender/python
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_SOUNDSYSTEM)/include
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
index 0a0b4939ea5..cdf617f1722 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp
@@ -192,7 +192,7 @@ void CcdPhysicsEnvironment::removeCcdPhysicsController(CcdPhysicsController* ctr
if ((&p2p->GetRigidBodyA() == ctrl->GetRigidBody() ||
(&p2p->GetRigidBodyB() == ctrl->GetRigidBody())))
{
- removeConstraint(p2p);
+ removeConstraint(p2p->GetConstraintId());
//only 1 constraint per constroller
break;
}
@@ -209,7 +209,7 @@ void CcdPhysicsEnvironment::removeCcdPhysicsController(CcdPhysicsController* ctr
if ((&p2p->GetRigidBodyA() == ctrl->GetRigidBody() ||
(&p2p->GetRigidBodyB() == ctrl->GetRigidBody())))
{
- removeConstraint(p2p);
+ removeConstraint(p2p->GetConstraintId());
//only 1 constraint per constroller
break;
}
@@ -301,14 +301,28 @@ void CcdPhysicsEnvironment::beginFrame()
}
-/// Perform an integration step of duration 'timeStep'.
bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
{
+
+ if (!SimdFuzzyZero(timeStep))
+ {
+ //Blender runs 30hertz, so subdivide so we get 60 hertz
+ proceedDeltaTimeOneStep(0.5f*timeStep);
+ proceedDeltaTimeOneStep(0.5f*timeStep);
+ } else
+ {
+ //todo: interpolate
+ }
+ return true;
+}
+/// Perform an integration step of duration 'timeStep'.
+bool CcdPhysicsEnvironment::proceedDeltaTimeOneStep(float timeStep)
+{
// printf("CcdPhysicsEnvironment::proceedDeltaTime\n");
- if (timeStep == 0.f)
+ if (SimdFuzzyZero(timeStep))
return true;
if (m_debugDrawer)
@@ -318,9 +332,6 @@ bool CcdPhysicsEnvironment::proceedDeltaTime(double curTime,float timeStep)
- //clamp hardcoded for now
- if (timeStep > 0.02)
- timeStep = 0.02;
//this is needed because scaling is not known in advance, and scaling has to propagate to the shape
if (!m_scalingPropagated)
@@ -758,7 +769,9 @@ int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl
}
m_p2pConstraints.push_back(p2p);
- return 0;
+
+ //64 bit systems can't cast pointer to int. could use size_t instead.
+ return p2p->GetConstraintId();
break;
}
@@ -773,17 +786,24 @@ int CcdPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ctrl
}
-void CcdPhysicsEnvironment::removeConstraint(void* p2p)
+void CcdPhysicsEnvironment::removeConstraint(int constraintId)
{
- std::vector<Point2PointConstraint*>::iterator i =
- std::find(m_p2pConstraints.begin(), m_p2pConstraints.end(),
- (Point2PointConstraint *)p2p);
+ std::vector<Point2PointConstraint*>::iterator i;
+
+ //std::find(m_p2pConstraints.begin(), m_p2pConstraints.end(),
+ // (Point2PointConstraint *)p2p);
- if (!(i == m_p2pConstraints.end()) )
- {
- std::swap(*i, m_p2pConstraints.back());
- m_p2pConstraints.pop_back();
- }
+ for (i=m_p2pConstraints.begin();
+ !(i==m_p2pConstraints.end()); i++)
+ {
+ Point2PointConstraint* p2p = (*i);
+ if (p2p->GetConstraintId() == constraintId)
+ {
+ std::swap(*i, m_p2pConstraints.back());
+ m_p2pConstraints.pop_back();
+ break;
+ }
+ }
}
PHY_IPhysicsController* CcdPhysicsEnvironment::rayTest(PHY_IPhysicsController* ignoreClient, float fromX,float fromY,float fromZ, float toX,float toY,float toZ,
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
index 6050af2f3c8..1b2527aa5bb 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.h
@@ -63,6 +63,8 @@ class CcdPhysicsEnvironment : public PHY_IPhysicsEnvironment
virtual void endFrame() {};
/// Perform an integration step of duration 'timeStep'.
virtual bool proceedDeltaTime(double curTime,float timeStep);
+ bool proceedDeltaTimeOneStep(float timeStep);
+
virtual void setFixedTimeStep(bool useFixedTimeStep,float fixedTimeStep){};
//returns 0.f if no fixed timestep is used
@@ -75,7 +77,7 @@ class CcdPhysicsEnvironment : public PHY_IPhysicsEnvironment
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
float axisX,float axisY,float axisZ);
- virtual void removeConstraint(void* constraintid);
+ virtual void removeConstraint(int constraintid);
virtual PHY_IPhysicsController* rayTest(PHY_IPhysicsController* ignoreClient, float fromX,float fromY,float fromZ, float toX,float toY,float toZ,
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
index 0b6f8a4ded4..0532a9a8cf7 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.cpp
@@ -101,7 +101,7 @@ int DummyPhysicsEnvironment::createConstraint(class PHY_IPhysicsController* ct
}
-void DummyPhysicsEnvironment::removeConstraint(void * constraintid)
+void DummyPhysicsEnvironment::removeConstraint(int constraintid)
{
if (constraintid)
{
diff --git a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
index 0a359feea6d..a400459afe6 100644
--- a/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Dummy/DummyPhysicsEnvironment.h
@@ -61,7 +61,7 @@ public:
float pivotX,float pivotY,float pivotZ,
float axisX,float axisY,float axisZ);
- virtual void removeConstraint(void * constraintid);
+ virtual void removeConstraint(int constraintid);
virtual PHY_IPhysicsController* rayTest(PHY_IPhysicsController* ignoreClient, float fromX,float fromY,float fromZ, float toX,float toY,float toZ,
float& hitX,float& hitY,float& hitZ,float& normalX,float& normalY,float& normalZ);
diff --git a/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp b/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp
index 081a2fb9794..656051be4f5 100644
--- a/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp
+++ b/source/gameengine/Physics/Sumo/Fuzzics/src/SM_Scene.cpp
@@ -183,7 +183,7 @@ bool SM_Scene::proceed(MT_Scalar curtime, MT_Scalar ticrate)
if (!m_frames)
{
if (ticrate > 0.)
- m_frames = (unsigned int)(curtime*ticrate + 1.0);
+ m_frames = (unsigned int)(curtime*ticrate) + 1.0;
else
m_frames = (unsigned int)(curtime*65536.0);
}
@@ -275,7 +275,11 @@ bool SM_Scene::proceed(MT_Scalar curtime, MT_Scalar ticrate)
for (i = m_objectList.begin(); i != m_objectList.end(); ++i)
(*i)->interpolate(curtime);
- m_frames = (unsigned int)(curtime*ticrate + 1.0);
+ //only update the m_frames after an actual physics timestep
+ if (num_samples)
+ {
+ m_frames = (unsigned int)(curtime*ticrate) + 1.0;
+ }
}
else
{
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
index 8d03fd4b0f4..ead6dcc0106 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.cpp
@@ -117,7 +117,7 @@ int SumoPhysicsEnvironment::createConstraint(
return constraintid;
}
-void SumoPhysicsEnvironment::removeConstraint(void * constraintid)
+void SumoPhysicsEnvironment::removeConstraint(int constraintid)
{
if (constraintid)
{
diff --git a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
index c93e34825b9..e1641407166 100644
--- a/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
+++ b/source/gameengine/Physics/Sumo/SumoPhysicsEnvironment.h
@@ -66,7 +66,7 @@ public:
float pivotX,float pivotY,float pivotZ,
float axisX,float axisY,float axisZ);
- virtual void removeConstraint(void * constraintid);
+ virtual void removeConstraint(int constraintid);
virtual PHY_IPhysicsController* rayTest(PHY_IPhysicsController* ignoreClient,float fromX,float fromY,float fromZ, float toX,float toY,float toZ,
float& hitX,float& hitY,float& hitZ,float& normalX,float& normalY,float& normalZ);
diff --git a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
index 1158563527a..078f84d4de2 100644
--- a/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
+++ b/source/gameengine/Physics/common/PHY_IPhysicsEnvironment.h
@@ -83,7 +83,7 @@ class PHY_IPhysicsEnvironment
virtual int createConstraint(class PHY_IPhysicsController* ctrl,class PHY_IPhysicsController* ctrl2,PHY_ConstraintType type,
float pivotX,float pivotY,float pivotZ,
float axisX,float axisY,float axisZ)=0;
- virtual void removeConstraint(void * constraintid)=0;
+ virtual void removeConstraint(int constraintid)=0;
virtual PHY_IPhysicsController* rayTest(PHY_IPhysicsController* ignoreClient, float fromX,float fromY,float fromZ, float toX,float toY,float toZ,
float& hitX,float& hitY,float& hitZ,float& normalX,float& normalY,float& normalZ)=0;
diff --git a/source/gameengine/Rasterizer/Makefile b/source/gameengine/Rasterizer/Makefile
index 6a1421ae90b..5f8eace8adb 100644
--- a/source/gameengine/Rasterizer/Makefile
+++ b/source/gameengine/Rasterizer/Makefile
@@ -42,7 +42,9 @@ CPPFLAGS += -I$(OPENGL_HEADERS)
CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../kernel/gen_system
-
+ifeq ($(OS),darwin)
+ CPPFLAGS += -fpascal-strings
+endif
###############
SOURCEDIR = source/gameengine/Rasterizer
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile
index c03aab3422e..40f3fc50005 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/Makefile
@@ -44,4 +44,6 @@ CPPFLAGS += -I$(NAN_STRING)/include
CPPFLAGS += -I$(NAN_MOTO)/include
CPPFLAGS += -I../../../kernel/gen_system
CPPFLAGS += -I..
-
+ifeq ($(OS),darwin)
+ CPPFLAGS += -fpascal-strings
+endif
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
index 344fdbbf164..af3a9bca03e 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.cpp
@@ -47,7 +47,7 @@
#elif defined(__APPLE__)
# include <Carbon/Carbon.h>
-
+# define GL_GLEXT_LEGACY 1
# include <OpenGL/gl.h>
#else /* UNIX */
@@ -322,88 +322,88 @@ BL_EXTInfo RAS_EXT_support;
#ifdef GL_ARB_multitexture
int max_texture_units = 2;
-PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
-PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
-PFNGLMULTITEXCOORD1DARBPROC glMultiTexCoord1dARB;
-PFNGLMULTITEXCOORD1DVARBPROC glMultiTexCoord1dvARB;
-PFNGLMULTITEXCOORD1FARBPROC glMultiTexCoord1fARB;
-PFNGLMULTITEXCOORD1FVARBPROC glMultiTexCoord1fvARB;
-PFNGLMULTITEXCOORD1IARBPROC glMultiTexCoord1iARB;
-PFNGLMULTITEXCOORD1IVARBPROC glMultiTexCoord1ivARB;
-PFNGLMULTITEXCOORD1SARBPROC glMultiTexCoord1sARB;
-PFNGLMULTITEXCOORD1SVARBPROC glMultiTexCoord1svARB;
-PFNGLMULTITEXCOORD2DARBPROC glMultiTexCoord2dARB;
-PFNGLMULTITEXCOORD2DVARBPROC glMultiTexCoord2dvARB;
-PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
-PFNGLMULTITEXCOORD2FVARBPROC glMultiTexCoord2fvARB;
-PFNGLMULTITEXCOORD2IARBPROC glMultiTexCoord2iARB;
-PFNGLMULTITEXCOORD2IVARBPROC glMultiTexCoord2ivARB;
-PFNGLMULTITEXCOORD2SARBPROC glMultiTexCoord2sARB;
-PFNGLMULTITEXCOORD2SVARBPROC glMultiTexCoord2svARB;
-PFNGLMULTITEXCOORD3DARBPROC glMultiTexCoord3dARB;
-PFNGLMULTITEXCOORD3DVARBPROC glMultiTexCoord3dvARB;
-PFNGLMULTITEXCOORD3FARBPROC glMultiTexCoord3fARB;
-PFNGLMULTITEXCOORD3FVARBPROC glMultiTexCoord3fvARB;
-PFNGLMULTITEXCOORD3IARBPROC glMultiTexCoord3iARB;
-PFNGLMULTITEXCOORD3IVARBPROC glMultiTexCoord3ivARB;
-PFNGLMULTITEXCOORD3SARBPROC glMultiTexCoord3sARB;
-PFNGLMULTITEXCOORD3SVARBPROC glMultiTexCoord3svARB;
-PFNGLMULTITEXCOORD4DARBPROC glMultiTexCoord4dARB;
-PFNGLMULTITEXCOORD4DVARBPROC glMultiTexCoord4dvARB;
-PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB;
-PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB;
-PFNGLMULTITEXCOORD4IARBPROC glMultiTexCoord4iARB;
-PFNGLMULTITEXCOORD4IVARBPROC glMultiTexCoord4ivARB;
-PFNGLMULTITEXCOORD4SARBPROC glMultiTexCoord4sARB;
-PFNGLMULTITEXCOORD4SVARBPROC glMultiTexCoord4svARB;
+ PFNGLACTIVETEXTUREARBPROC blActiveTextureARB;
+ PFNGLCLIENTACTIVETEXTUREARBPROC blClientActiveTextureARB;
+ PFNGLMULTITEXCOORD1DARBPROC blMultiTexCoord1dARB;
+ PFNGLMULTITEXCOORD1DVARBPROC blMultiTexCoord1dvARB;
+ PFNGLMULTITEXCOORD1FARBPROC blMultiTexCoord1fARB;
+ PFNGLMULTITEXCOORD1FVARBPROC blMultiTexCoord1fvARB;
+ PFNGLMULTITEXCOORD1IARBPROC blMultiTexCoord1iARB;
+ PFNGLMULTITEXCOORD1IVARBPROC blMultiTexCoord1ivARB;
+ PFNGLMULTITEXCOORD1SARBPROC blMultiTexCoord1sARB;
+ PFNGLMULTITEXCOORD1SVARBPROC blMultiTexCoord1svARB;
+ PFNGLMULTITEXCOORD2DARBPROC blMultiTexCoord2dARB;
+ PFNGLMULTITEXCOORD2DVARBPROC blMultiTexCoord2dvARB;
+ PFNGLMULTITEXCOORD2FARBPROC blMultiTexCoord2fARB;
+ PFNGLMULTITEXCOORD2FVARBPROC blMultiTexCoord2fvARB;
+ PFNGLMULTITEXCOORD2IARBPROC blMultiTexCoord2iARB;
+ PFNGLMULTITEXCOORD2IVARBPROC blMultiTexCoord2ivARB;
+ PFNGLMULTITEXCOORD2SARBPROC blMultiTexCoord2sARB;
+ PFNGLMULTITEXCOORD2SVARBPROC blMultiTexCoord2svARB;
+ PFNGLMULTITEXCOORD3DARBPROC blMultiTexCoord3dARB;
+ PFNGLMULTITEXCOORD3DVARBPROC blMultiTexCoord3dvARB;
+ PFNGLMULTITEXCOORD3FARBPROC blMultiTexCoord3fARB;
+ PFNGLMULTITEXCOORD3FVARBPROC blMultiTexCoord3fvARB;
+ PFNGLMULTITEXCOORD3IARBPROC blMultiTexCoord3iARB;
+ PFNGLMULTITEXCOORD3IVARBPROC blMultiTexCoord3ivARB;
+ PFNGLMULTITEXCOORD3SARBPROC blMultiTexCoord3sARB;
+ PFNGLMULTITEXCOORD3SVARBPROC blMultiTexCoord3svARB;
+ PFNGLMULTITEXCOORD4DARBPROC blMultiTexCoord4dARB;
+ PFNGLMULTITEXCOORD4DVARBPROC blMultiTexCoord4dvARB;
+ PFNGLMULTITEXCOORD4FARBPROC blMultiTexCoord4fARB;
+ PFNGLMULTITEXCOORD4FVARBPROC blMultiTexCoord4fvARB;
+ PFNGLMULTITEXCOORD4IARBPROC blMultiTexCoord4iARB;
+ PFNGLMULTITEXCOORD4IVARBPROC blMultiTexCoord4ivARB;
+ PFNGLMULTITEXCOORD4SARBPROC blMultiTexCoord4sARB;
+ PFNGLMULTITEXCOORD4SVARBPROC blMultiTexCoord4svARB;
#endif
#ifdef GL_ARB_shader_objects
-PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
-PFNGLGETHANDLEARBPROC glGetHandleARB;
-PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
-PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
-PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
-PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
-PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
-PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
-PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
-PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
-PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
-PFNGLUNIFORM1FARBPROC glUniform1fARB;
-PFNGLUNIFORM2FARBPROC glUniform2fARB;
-PFNGLUNIFORM3FARBPROC glUniform3fARB;
-PFNGLUNIFORM4FARBPROC glUniform4fARB;
-PFNGLUNIFORM1IARBPROC glUniform1iARB;
-PFNGLUNIFORM2IARBPROC glUniform2iARB;
-PFNGLUNIFORM3IARBPROC glUniform3iARB;
-PFNGLUNIFORM4IARBPROC glUniform4iARB;
-PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
-PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
-PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
-PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
-PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
-PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
-PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
-PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
-PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
-PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
-PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
-PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
-PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
-PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
-PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
-PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
-PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
-PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
-PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
-PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
+ PFNGLDELETEOBJECTARBPROC blDeleteObjectARB;
+ PFNGLGETHANDLEARBPROC blGetHandleARB;
+ PFNGLDETACHOBJECTARBPROC blDetachObjectARB;
+ PFNGLCREATESHADEROBJECTARBPROC blCreateShaderObjectARB;
+ PFNGLSHADERSOURCEARBPROC blShaderSourceARB;
+ PFNGLCOMPILESHADERARBPROC blCompileShaderARB;
+ PFNGLCREATEPROGRAMOBJECTARBPROC blCreateProgramObjectARB;
+ PFNGLATTACHOBJECTARBPROC blAttachObjectARB;
+ PFNGLLINKPROGRAMARBPROC blLinkProgramARB;
+ PFNGLUSEPROGRAMOBJECTARBPROC blUseProgramObjectARB;
+ PFNGLVALIDATEPROGRAMARBPROC blValidateProgramARB;
+ PFNGLUNIFORM1FARBPROC blUniform1fARB;
+ PFNGLUNIFORM2FARBPROC blUniform2fARB;
+ PFNGLUNIFORM3FARBPROC blUniform3fARB;
+ PFNGLUNIFORM4FARBPROC blUniform4fARB;
+ PFNGLUNIFORM1IARBPROC blUniform1iARB;
+ PFNGLUNIFORM2IARBPROC blUniform2iARB;
+ PFNGLUNIFORM3IARBPROC blUniform3iARB;
+ PFNGLUNIFORM4IARBPROC blUniform4iARB;
+ PFNGLUNIFORM1FVARBPROC blUniform1fvARB;
+ PFNGLUNIFORM2FVARBPROC blUniform2fvARB;
+ PFNGLUNIFORM3FVARBPROC blUniform3fvARB;
+ PFNGLUNIFORM4FVARBPROC blUniform4fvARB;
+ PFNGLUNIFORM1IVARBPROC blUniform1ivARB;
+ PFNGLUNIFORM2IVARBPROC blUniform2ivARB;
+ PFNGLUNIFORM3IVARBPROC blUniform3ivARB;
+ PFNGLUNIFORM4IVARBPROC blUniform4ivARB;
+ PFNGLUNIFORMMATRIX2FVARBPROC blUniformMatrix2fvARB;
+ PFNGLUNIFORMMATRIX3FVARBPROC blUniformMatrix3fvARB;
+ PFNGLUNIFORMMATRIX4FVARBPROC blUniformMatrix4fvARB;
+ PFNGLGETOBJECTPARAMETERFVARBPROC blGetObjectParameterfvARB;
+ PFNGLGETOBJECTPARAMETERIVARBPROC blGetObjectParameterivARB;
+ PFNGLGETINFOLOGARBPROC blGetInfoLogARB;
+ PFNGLGETATTACHEDOBJECTSARBPROC blGetAttachedObjectsARB;
+ PFNGLGETUNIFORMLOCATIONARBPROC blGetUniformLocationARB;
+ PFNGLGETACTIVEUNIFORMARBPROC blGetActiveUniformARB;
+ PFNGLGETUNIFORMFVARBPROC blGetUniformfvARB;
+ PFNGLGETUNIFORMIVARBPROC blGetUniformivARB;
+ PFNGLGETSHADERSOURCEARBPROC blGetShaderSourceARB;
#endif
#ifdef GL_ARB_vertex_shader
-PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
-PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
-PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
+PFNGLBINDATTRIBLOCATIONARBPROC blBindAttribLocationARB;
+PFNGLGETACTIVEATTRIBARBPROC blGetActiveAttribARB;
+PFNGLGETATTRIBLOCATIONARBPROC blGetAttribLocationARB;
#endif
} // namespace bgl
@@ -464,41 +464,41 @@ static void LinkExtensions()
#ifdef GL_ARB_multitexture
if (QueryExtension("GL_ARB_multitexture"))
{
- bgl::glActiveTextureARB = reinterpret_cast<PFNGLACTIVETEXTUREARBPROC>(bglGetProcAddress((const GLubyte *) "glActiveTextureARB"));
- bgl::glClientActiveTextureARB = reinterpret_cast<PFNGLCLIENTACTIVETEXTUREARBPROC>(bglGetProcAddress((const GLubyte *) "glClientActiveTextureARB"));
- bgl::glMultiTexCoord1dARB = reinterpret_cast<PFNGLMULTITEXCOORD1DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1dARB"));
- bgl::glMultiTexCoord1dvARB = reinterpret_cast<PFNGLMULTITEXCOORD1DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1dvARB"));
- bgl::glMultiTexCoord1fARB = reinterpret_cast<PFNGLMULTITEXCOORD1FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1fARB"));
- bgl::glMultiTexCoord1fvARB = reinterpret_cast<PFNGLMULTITEXCOORD1FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1fvARB"));
- bgl::glMultiTexCoord1iARB = reinterpret_cast<PFNGLMULTITEXCOORD1IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1iARB"));
- bgl::glMultiTexCoord1ivARB = reinterpret_cast<PFNGLMULTITEXCOORD1IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1ivARB"));
- bgl::glMultiTexCoord1sARB = reinterpret_cast<PFNGLMULTITEXCOORD1SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1sARB"));
- bgl::glMultiTexCoord1svARB = reinterpret_cast<PFNGLMULTITEXCOORD1SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1svARB"));
- bgl::glMultiTexCoord2dARB = reinterpret_cast<PFNGLMULTITEXCOORD2DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2dARB"));
- bgl::glMultiTexCoord2dvARB = reinterpret_cast<PFNGLMULTITEXCOORD2DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2dvARB"));
- bgl::glMultiTexCoord2fARB = reinterpret_cast<PFNGLMULTITEXCOORD2FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2fARB"));
- bgl::glMultiTexCoord2fvARB = reinterpret_cast<PFNGLMULTITEXCOORD2FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2fvARB"));
- bgl::glMultiTexCoord2iARB = reinterpret_cast<PFNGLMULTITEXCOORD2IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2iARB"));
- bgl::glMultiTexCoord2ivARB = reinterpret_cast<PFNGLMULTITEXCOORD2IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2ivARB"));
- bgl::glMultiTexCoord2sARB = reinterpret_cast<PFNGLMULTITEXCOORD2SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2sARB"));
- bgl::glMultiTexCoord2svARB = reinterpret_cast<PFNGLMULTITEXCOORD2SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2svARB"));
- bgl::glMultiTexCoord3dARB = reinterpret_cast<PFNGLMULTITEXCOORD3DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3dARB"));
- bgl::glMultiTexCoord3dvARB = reinterpret_cast<PFNGLMULTITEXCOORD3DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3dvARB"));
- bgl::glMultiTexCoord3fARB = reinterpret_cast<PFNGLMULTITEXCOORD3FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3fARB"));
- bgl::glMultiTexCoord3fvARB = reinterpret_cast<PFNGLMULTITEXCOORD3FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3fvARB"));
- bgl::glMultiTexCoord3iARB = reinterpret_cast<PFNGLMULTITEXCOORD3IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3iARB"));
- bgl::glMultiTexCoord3ivARB = reinterpret_cast<PFNGLMULTITEXCOORD3IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3ivARB"));
- bgl::glMultiTexCoord3sARB = reinterpret_cast<PFNGLMULTITEXCOORD3SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3sARB"));
- bgl::glMultiTexCoord3svARB = reinterpret_cast<PFNGLMULTITEXCOORD3SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3svARB"));
- bgl::glMultiTexCoord4dARB = reinterpret_cast<PFNGLMULTITEXCOORD4DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4dARB"));
- bgl::glMultiTexCoord4dvARB = reinterpret_cast<PFNGLMULTITEXCOORD4DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4dvARB"));
- bgl::glMultiTexCoord4fARB = reinterpret_cast<PFNGLMULTITEXCOORD4FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4fARB"));
- bgl::glMultiTexCoord4fvARB = reinterpret_cast<PFNGLMULTITEXCOORD4FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4fvARB"));
- bgl::glMultiTexCoord4iARB = reinterpret_cast<PFNGLMULTITEXCOORD4IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4iARB"));
- bgl::glMultiTexCoord4ivARB = reinterpret_cast<PFNGLMULTITEXCOORD4IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4ivARB"));
- bgl::glMultiTexCoord4sARB = reinterpret_cast<PFNGLMULTITEXCOORD4SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4sARB"));
- bgl::glMultiTexCoord4svARB = reinterpret_cast<PFNGLMULTITEXCOORD4SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4svARB"));
- if (bgl::glActiveTextureARB && bgl::glClientActiveTextureARB && bgl::glMultiTexCoord1dARB && bgl::glMultiTexCoord1dvARB && bgl::glMultiTexCoord1fARB && bgl::glMultiTexCoord1fvARB && bgl::glMultiTexCoord1iARB && bgl::glMultiTexCoord1ivARB && bgl::glMultiTexCoord1sARB && bgl::glMultiTexCoord1svARB && bgl::glMultiTexCoord2dARB && bgl::glMultiTexCoord2dvARB && bgl::glMultiTexCoord2fARB && bgl::glMultiTexCoord2fvARB && bgl::glMultiTexCoord2iARB && bgl::glMultiTexCoord2ivARB && bgl::glMultiTexCoord2sARB && bgl::glMultiTexCoord2svARB && bgl::glMultiTexCoord3dARB && bgl::glMultiTexCoord3dvARB && bgl::glMultiTexCoord3fARB && bgl::glMultiTexCoord3fvARB && bgl::glMultiTexCoord3iARB && bgl::glMultiTexCoord3ivARB && bgl::glMultiTexCoord3sARB && bgl::glMultiTexCoord3svARB && bgl::glMultiTexCoord4dARB && bgl::glMultiTexCoord4dvARB && bgl::glMultiTexCoord4fARB && bgl::glMultiTexCoord4fvARB && bgl::glMultiTexCoord4iARB && bgl::glMultiTexCoord4ivARB && bgl::glMultiTexCoord4sARB && bgl::glMultiTexCoord4svARB) {
+ bgl::blActiveTextureARB = reinterpret_cast<PFNGLACTIVETEXTUREARBPROC>(bglGetProcAddress((const GLubyte *) "glActiveTextureARB"));
+ bgl::blClientActiveTextureARB = reinterpret_cast<PFNGLCLIENTACTIVETEXTUREARBPROC>(bglGetProcAddress((const GLubyte *) "glClientActiveTextureARB"));
+ bgl::blMultiTexCoord1dARB = reinterpret_cast<PFNGLMULTITEXCOORD1DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1dARB"));
+ bgl::blMultiTexCoord1dvARB = reinterpret_cast<PFNGLMULTITEXCOORD1DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1dvARB"));
+ bgl::blMultiTexCoord1fARB = reinterpret_cast<PFNGLMULTITEXCOORD1FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1fARB"));
+ bgl::blMultiTexCoord1fvARB = reinterpret_cast<PFNGLMULTITEXCOORD1FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1fvARB"));
+ bgl::blMultiTexCoord1iARB = reinterpret_cast<PFNGLMULTITEXCOORD1IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1iARB"));
+ bgl::blMultiTexCoord1ivARB = reinterpret_cast<PFNGLMULTITEXCOORD1IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1ivARB"));
+ bgl::blMultiTexCoord1sARB = reinterpret_cast<PFNGLMULTITEXCOORD1SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1sARB"));
+ bgl::blMultiTexCoord1svARB = reinterpret_cast<PFNGLMULTITEXCOORD1SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord1svARB"));
+ bgl::blMultiTexCoord2dARB = reinterpret_cast<PFNGLMULTITEXCOORD2DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2dARB"));
+ bgl::blMultiTexCoord2dvARB = reinterpret_cast<PFNGLMULTITEXCOORD2DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2dvARB"));
+ bgl::blMultiTexCoord2fARB = reinterpret_cast<PFNGLMULTITEXCOORD2FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2fARB"));
+ bgl::blMultiTexCoord2fvARB = reinterpret_cast<PFNGLMULTITEXCOORD2FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2fvARB"));
+ bgl::blMultiTexCoord2iARB = reinterpret_cast<PFNGLMULTITEXCOORD2IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2iARB"));
+ bgl::blMultiTexCoord2ivARB = reinterpret_cast<PFNGLMULTITEXCOORD2IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2ivARB"));
+ bgl::blMultiTexCoord2sARB = reinterpret_cast<PFNGLMULTITEXCOORD2SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2sARB"));
+ bgl::blMultiTexCoord2svARB = reinterpret_cast<PFNGLMULTITEXCOORD2SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord2svARB"));
+ bgl::blMultiTexCoord3dARB = reinterpret_cast<PFNGLMULTITEXCOORD3DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3dARB"));
+ bgl::blMultiTexCoord3dvARB = reinterpret_cast<PFNGLMULTITEXCOORD3DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3dvARB"));
+ bgl::blMultiTexCoord3fARB = reinterpret_cast<PFNGLMULTITEXCOORD3FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3fARB"));
+ bgl::blMultiTexCoord3fvARB = reinterpret_cast<PFNGLMULTITEXCOORD3FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3fvARB"));
+ bgl::blMultiTexCoord3iARB = reinterpret_cast<PFNGLMULTITEXCOORD3IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3iARB"));
+ bgl::blMultiTexCoord3ivARB = reinterpret_cast<PFNGLMULTITEXCOORD3IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3ivARB"));
+ bgl::blMultiTexCoord3sARB = reinterpret_cast<PFNGLMULTITEXCOORD3SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3sARB"));
+ bgl::blMultiTexCoord3svARB = reinterpret_cast<PFNGLMULTITEXCOORD3SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord3svARB"));
+ bgl::blMultiTexCoord4dARB = reinterpret_cast<PFNGLMULTITEXCOORD4DARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4dARB"));
+ bgl::blMultiTexCoord4dvARB = reinterpret_cast<PFNGLMULTITEXCOORD4DVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4dvARB"));
+ bgl::blMultiTexCoord4fARB = reinterpret_cast<PFNGLMULTITEXCOORD4FARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4fARB"));
+ bgl::blMultiTexCoord4fvARB = reinterpret_cast<PFNGLMULTITEXCOORD4FVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4fvARB"));
+ bgl::blMultiTexCoord4iARB = reinterpret_cast<PFNGLMULTITEXCOORD4IARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4iARB"));
+ bgl::blMultiTexCoord4ivARB = reinterpret_cast<PFNGLMULTITEXCOORD4IVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4ivARB"));
+ bgl::blMultiTexCoord4sARB = reinterpret_cast<PFNGLMULTITEXCOORD4SARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4sARB"));
+ bgl::blMultiTexCoord4svARB = reinterpret_cast<PFNGLMULTITEXCOORD4SVARBPROC>(bglGetProcAddress((const GLubyte *) "glMultiTexCoord4svARB"));
+ if (bgl::blActiveTextureARB && bgl::blClientActiveTextureARB && bgl::blMultiTexCoord1dARB && bgl::blMultiTexCoord1dvARB && bgl::blMultiTexCoord1fARB && bgl::blMultiTexCoord1fvARB && bgl::blMultiTexCoord1iARB && bgl::blMultiTexCoord1ivARB && bgl::blMultiTexCoord1sARB && bgl::blMultiTexCoord1svARB && bgl::blMultiTexCoord2dARB && bgl::blMultiTexCoord2dvARB && bgl::blMultiTexCoord2fARB && bgl::blMultiTexCoord2fvARB && bgl::blMultiTexCoord2iARB && bgl::blMultiTexCoord2ivARB && bgl::blMultiTexCoord2sARB && bgl::blMultiTexCoord2svARB && bgl::blMultiTexCoord3dARB && bgl::blMultiTexCoord3dvARB && bgl::blMultiTexCoord3fARB && bgl::blMultiTexCoord3fvARB && bgl::blMultiTexCoord3iARB && bgl::blMultiTexCoord3ivARB && bgl::blMultiTexCoord3sARB && bgl::blMultiTexCoord3svARB && bgl::blMultiTexCoord4dARB && bgl::blMultiTexCoord4dvARB && bgl::blMultiTexCoord4fARB && bgl::blMultiTexCoord4fvARB && bgl::blMultiTexCoord4iARB && bgl::blMultiTexCoord4ivARB && bgl::blMultiTexCoord4sARB && bgl::blMultiTexCoord4svARB) {
EnableExtension(_GL_ARB_multitexture);
RAS_EXT_support._ARB_multitexture = 1;
if (doDebugMessages)
@@ -509,49 +509,49 @@ static void LinkExtensions()
}
#endif
-#ifdef GL_ARB_shader_objects
+#if GL_ARB_shader_objects
if (QueryExtension("GL_ARB_shader_objects"))
{
- glDeleteObjectARB = reinterpret_cast<PFNGLDELETEOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glDeleteObjectARB"));
- glGetHandleARB = reinterpret_cast<PFNGLGETHANDLEARBPROC>(bglGetProcAddress((const GLubyte *) "glGetHandleARB"));
- glDetachObjectARB = reinterpret_cast<PFNGLDETACHOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glDetachObjectARB"));
- glCreateShaderObjectARB = reinterpret_cast<PFNGLCREATESHADEROBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glCreateShaderObjectARB"));
- glShaderSourceARB = reinterpret_cast<PFNGLSHADERSOURCEARBPROC>(bglGetProcAddress((const GLubyte *) "glShaderSourceARB"));
- glCompileShaderARB = reinterpret_cast<PFNGLCOMPILESHADERARBPROC>(bglGetProcAddress((const GLubyte *) "glCompileShaderARB"));
- glCreateProgramObjectARB = reinterpret_cast<PFNGLCREATEPROGRAMOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glCreateProgramObjectARB"));
- glAttachObjectARB = reinterpret_cast<PFNGLATTACHOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glAttachObjectARB"));
- glLinkProgramARB = reinterpret_cast<PFNGLLINKPROGRAMARBPROC>(bglGetProcAddress((const GLubyte *) "glLinkProgramARB"));
- glUseProgramObjectARB = reinterpret_cast<PFNGLUSEPROGRAMOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glUseProgramObjectARB"));
- glValidateProgramARB = reinterpret_cast<PFNGLVALIDATEPROGRAMARBPROC>(bglGetProcAddress((const GLubyte *) "glValidateProgramARB"));
- glUniform1fARB = reinterpret_cast<PFNGLUNIFORM1FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1fARB"));
- glUniform2fARB = reinterpret_cast<PFNGLUNIFORM2FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2fARB"));
- glUniform3fARB = reinterpret_cast<PFNGLUNIFORM3FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3fARB"));
- glUniform4fARB = reinterpret_cast<PFNGLUNIFORM4FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4fARB"));
- glUniform1iARB = reinterpret_cast<PFNGLUNIFORM1IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1iARB"));
- glUniform2iARB = reinterpret_cast<PFNGLUNIFORM2IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2iARB"));
- glUniform3iARB = reinterpret_cast<PFNGLUNIFORM3IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3iARB"));
- glUniform4iARB = reinterpret_cast<PFNGLUNIFORM4IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4iARB"));
- glUniform1fvARB = reinterpret_cast<PFNGLUNIFORM1FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1fvARB"));
- glUniform2fvARB = reinterpret_cast<PFNGLUNIFORM2FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2fvARB"));
- glUniform3fvARB = reinterpret_cast<PFNGLUNIFORM3FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3fvARB"));
- glUniform4fvARB = reinterpret_cast<PFNGLUNIFORM4FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4fvARB"));
- glUniform1ivARB = reinterpret_cast<PFNGLUNIFORM1IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1ivARB"));
- glUniform2ivARB = reinterpret_cast<PFNGLUNIFORM2IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2ivARB"));
- glUniform3ivARB = reinterpret_cast<PFNGLUNIFORM3IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3ivARB"));
- glUniform4ivARB = reinterpret_cast<PFNGLUNIFORM4IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4ivARB"));
- glUniformMatrix2fvARB = reinterpret_cast<PFNGLUNIFORMMATRIX2FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniformMatrix2fvARB"));
- glUniformMatrix3fvARB = reinterpret_cast<PFNGLUNIFORMMATRIX3FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniformMatrix3fvARB"));
- glUniformMatrix4fvARB = reinterpret_cast<PFNGLUNIFORMMATRIX4FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniformMatrix4fvARB"));
- glGetObjectParameterfvARB = reinterpret_cast<PFNGLGETOBJECTPARAMETERFVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetObjectParameterfvARB"));
- glGetObjectParameterivARB = reinterpret_cast<PFNGLGETOBJECTPARAMETERIVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetObjectParameterivARB"));
- glGetInfoLogARB = reinterpret_cast<PFNGLGETINFOLOGARBPROC>(bglGetProcAddress((const GLubyte *) "glGetInfoLogARB"));
- glGetAttachedObjectsARB = reinterpret_cast<PFNGLGETATTACHEDOBJECTSARBPROC>(bglGetProcAddress((const GLubyte *) "glGetAttachedObjectsARB"));
- glGetUniformLocationARB = reinterpret_cast<PFNGLGETUNIFORMLOCATIONARBPROC>(bglGetProcAddress((const GLubyte *) "glGetUniformLocationARB"));
- glGetActiveUniformARB = reinterpret_cast<PFNGLGETACTIVEUNIFORMARBPROC>(bglGetProcAddress((const GLubyte *) "glGetActiveUniformARB"));
- glGetUniformfvARB = reinterpret_cast<PFNGLGETUNIFORMFVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetUniformfvARB"));
- glGetUniformivARB = reinterpret_cast<PFNGLGETUNIFORMIVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetUniformivARB"));
- glGetShaderSourceARB = reinterpret_cast<PFNGLGETSHADERSOURCEARBPROC>(bglGetProcAddress((const GLubyte *) "glGetShaderSourceARB"));
- if (glDeleteObjectARB && glGetHandleARB && glDetachObjectARB && glCreateShaderObjectARB && glShaderSourceARB && glCompileShaderARB && glCreateProgramObjectARB && glAttachObjectARB && glLinkProgramARB && glUseProgramObjectARB && glValidateProgramARB && glUniform1fARB && glUniform2fARB && glUniform3fARB && glUniform4fARB && glUniform1iARB && glUniform2iARB && glUniform3iARB && glUniform4iARB && glUniform1fvARB && glUniform2fvARB && glUniform3fvARB && glUniform4fvARB && glUniform1ivARB && glUniform2ivARB && glUniform3ivARB && glUniform4ivARB && glUniformMatrix2fvARB && glUniformMatrix3fvARB && glUniformMatrix4fvARB && glGetObjectParameterfvARB && glGetObjectParameterivARB && glGetInfoLogARB && glGetAttachedObjectsARB && glGetUniformLocationARB && glGetActiveUniformARB && glGetUniformfvARB && glGetUniformivARB && glGetShaderSourceARB) {
+ bgl::blDeleteObjectARB = reinterpret_cast<PFNGLDELETEOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glDeleteObjectARB"));
+ bgl::blGetHandleARB = reinterpret_cast<PFNGLGETHANDLEARBPROC>(bglGetProcAddress((const GLubyte *) "glGetHandleARB"));
+ bgl::blDetachObjectARB = reinterpret_cast<PFNGLDETACHOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glDetachObjectARB"));
+ bgl::blCreateShaderObjectARB = reinterpret_cast<PFNGLCREATESHADEROBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glCreateShaderObjectARB"));
+ bgl::blShaderSourceARB = reinterpret_cast<PFNGLSHADERSOURCEARBPROC>(bglGetProcAddress((const GLubyte *) "glShaderSourceARB"));
+ bgl::blCompileShaderARB = reinterpret_cast<PFNGLCOMPILESHADERARBPROC>(bglGetProcAddress((const GLubyte *) "glCompileShaderARB"));
+ bgl::blCreateProgramObjectARB = reinterpret_cast<PFNGLCREATEPROGRAMOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glCreateProgramObjectARB"));
+ bgl::blAttachObjectARB = reinterpret_cast<PFNGLATTACHOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glAttachObjectARB"));
+ bgl::blLinkProgramARB = reinterpret_cast<PFNGLLINKPROGRAMARBPROC>(bglGetProcAddress((const GLubyte *) "glLinkProgramARB"));
+ bgl::blUseProgramObjectARB = reinterpret_cast<PFNGLUSEPROGRAMOBJECTARBPROC>(bglGetProcAddress((const GLubyte *) "glUseProgramObjectARB"));
+ bgl::blValidateProgramARB = reinterpret_cast<PFNGLVALIDATEPROGRAMARBPROC>(bglGetProcAddress((const GLubyte *) "glValidateProgramARB"));
+ bgl::blUniform1fARB = reinterpret_cast<PFNGLUNIFORM1FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1fARB"));
+ bgl::blUniform2fARB = reinterpret_cast<PFNGLUNIFORM2FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2fARB"));
+ bgl::blUniform3fARB = reinterpret_cast<PFNGLUNIFORM3FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3fARB"));
+ bgl::blUniform4fARB = reinterpret_cast<PFNGLUNIFORM4FARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4fARB"));
+ bgl::blUniform1iARB = reinterpret_cast<PFNGLUNIFORM1IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1iARB"));
+ bgl::blUniform2iARB = reinterpret_cast<PFNGLUNIFORM2IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2iARB"));
+ bgl::blUniform3iARB = reinterpret_cast<PFNGLUNIFORM3IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3iARB"));
+ bgl::blUniform4iARB = reinterpret_cast<PFNGLUNIFORM4IARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4iARB"));
+ bgl::blUniform1fvARB = reinterpret_cast<PFNGLUNIFORM1FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1fvARB"));
+ bgl::blUniform2fvARB = reinterpret_cast<PFNGLUNIFORM2FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2fvARB"));
+ bgl::blUniform3fvARB = reinterpret_cast<PFNGLUNIFORM3FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3fvARB"));
+ bgl::blUniform4fvARB = reinterpret_cast<PFNGLUNIFORM4FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4fvARB"));
+ bgl::blUniform1ivARB = reinterpret_cast<PFNGLUNIFORM1IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform1ivARB"));
+ bgl::blUniform2ivARB = reinterpret_cast<PFNGLUNIFORM2IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform2ivARB"));
+ bgl::blUniform3ivARB = reinterpret_cast<PFNGLUNIFORM3IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform3ivARB"));
+ bgl::blUniform4ivARB = reinterpret_cast<PFNGLUNIFORM4IVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniform4ivARB"));
+ bgl::blUniformMatrix2fvARB = reinterpret_cast<PFNGLUNIFORMMATRIX2FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniformMatrix2fvARB"));
+ bgl::blUniformMatrix3fvARB = reinterpret_cast<PFNGLUNIFORMMATRIX3FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniformMatrix3fvARB"));
+ bgl::blUniformMatrix4fvARB = reinterpret_cast<PFNGLUNIFORMMATRIX4FVARBPROC>(bglGetProcAddress((const GLubyte *) "glUniformMatrix4fvARB"));
+ bgl::blGetObjectParameterfvARB = reinterpret_cast<PFNGLGETOBJECTPARAMETERFVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetObjectParameterfvARB"));
+ bgl::blGetObjectParameterivARB = reinterpret_cast<PFNGLGETOBJECTPARAMETERIVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetObjectParameterivARB"));
+ bgl::blGetInfoLogARB = reinterpret_cast<PFNGLGETINFOLOGARBPROC>(bglGetProcAddress((const GLubyte *) "glGetInfoLogARB"));
+ bgl::blGetAttachedObjectsARB = reinterpret_cast<PFNGLGETATTACHEDOBJECTSARBPROC>(bglGetProcAddress((const GLubyte *) "glGetAttachedObjectsARB"));
+ bgl::blGetUniformLocationARB = reinterpret_cast<PFNGLGETUNIFORMLOCATIONARBPROC>(bglGetProcAddress((const GLubyte *) "glGetUniformLocationARB"));
+ bgl::blGetActiveUniformARB = reinterpret_cast<PFNGLGETACTIVEUNIFORMARBPROC>(bglGetProcAddress((const GLubyte *) "glGetActiveUniformARB"));
+ bgl::blGetUniformfvARB = reinterpret_cast<PFNGLGETUNIFORMFVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetUniformfvARB"));
+ bgl::blGetUniformivARB = reinterpret_cast<PFNGLGETUNIFORMIVARBPROC>(bglGetProcAddress((const GLubyte *) "glGetUniformivARB"));
+ bgl::blGetShaderSourceARB = reinterpret_cast<PFNGLGETSHADERSOURCEARBPROC>(bglGetProcAddress((const GLubyte *) "glGetShaderSourceARB"));
+ if (bgl::blDeleteObjectARB && bgl::blGetHandleARB && bgl::blDetachObjectARB && bgl::blCreateShaderObjectARB && bgl::blShaderSourceARB && bgl::blCompileShaderARB && bgl::blCreateProgramObjectARB && bgl::blAttachObjectARB && bgl::blLinkProgramARB && bgl::blUseProgramObjectARB && bgl::blValidateProgramARB && bgl::blUniform1fARB && bgl::blUniform2fARB && bgl::blUniform3fARB && bgl::blUniform4fARB && bgl::blUniform1iARB && bgl::blUniform2iARB && bgl::blUniform3iARB && bgl::blUniform4iARB && bgl::blUniform1fvARB && bgl::blUniform2fvARB && bgl::blUniform3fvARB && bgl::blUniform4fvARB && bgl::blUniform1ivARB && bgl::blUniform2ivARB && bgl::blUniform3ivARB && bgl::blUniform4ivARB && bgl::blUniformMatrix2fvARB && bgl::blUniformMatrix3fvARB && bgl::blUniformMatrix4fvARB && bgl::blGetObjectParameterfvARB && bgl::blGetObjectParameterivARB && bgl::blGetInfoLogARB && bgl::blGetAttachedObjectsARB && bgl::blGetUniformLocationARB && bgl::blGetActiveUniformARB && bgl::blGetUniformfvARB && bgl::blGetUniformivARB && bgl::blGetShaderSourceARB) {
EnableExtension(_GL_ARB_shader_objects);
RAS_EXT_support._ARB_shader_objects =1;
if (doDebugMessages)
@@ -562,13 +562,13 @@ static void LinkExtensions()
}
#endif
-#ifdef GL_ARB_vertex_shader
+#if GL_ARB_vertex_shader
if (QueryExtension("GL_ARB_vertex_shader"))
{
- glBindAttribLocationARB = reinterpret_cast<PFNGLBINDATTRIBLOCATIONARBPROC>(bglGetProcAddress((const GLubyte *) "glBindAttribLocationARB"));
- glGetActiveAttribARB = reinterpret_cast<PFNGLGETACTIVEATTRIBARBPROC>(bglGetProcAddress((const GLubyte *) "glGetActiveAttribARB"));
- glGetAttribLocationARB = reinterpret_cast<PFNGLGETATTRIBLOCATIONARBPROC>(bglGetProcAddress((const GLubyte *) "glGetAttribLocationARB"));
- if (glBindAttribLocationARB && glGetActiveAttribARB && glGetAttribLocationARB) {
+ bgl::blBindAttribLocationARB = reinterpret_cast<PFNGLBINDATTRIBLOCATIONARBPROC>(bglGetProcAddress((const GLubyte *) "glBindAttribLocationARB"));
+ bgl::blGetActiveAttribARB = reinterpret_cast<PFNGLGETACTIVEATTRIBARBPROC>(bglGetProcAddress((const GLubyte *) "glGetActiveAttribARB"));
+ bgl::blGetAttribLocationARB = reinterpret_cast<PFNGLGETATTRIBLOCATIONARBPROC>(bglGetProcAddress((const GLubyte *) "glGetAttribLocationARB"));
+ if (bgl::blBindAttribLocationARB && bgl::blGetActiveAttribARB && bgl::blGetAttribLocationARB) {
EnableExtension(_GL_ARB_vertex_shader);
RAS_EXT_support._ARB_vertex_shader = 1;
if (doDebugMessages)
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h
index 2d862ea3853..a5dad19222b 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_GLExtensionManager.h
@@ -39,6 +39,7 @@
#elif defined(__APPLE__)
# define __glext_h_
+# define GL_GLEXT_LEGACY 1
# include <OpenGL/gl.h>
# include <OpenGL/glu.h>
# undef __glext_h_
@@ -52,6 +53,7 @@
#endif
#include "glext.h"
+
#include "EXT_separate_specular_color.h"
#include "ARB_multitexture.h"
namespace bgl
@@ -379,8 +381,8 @@ namespace bgl
void InitExtensions(int debug);
#if defined(PFNGLPNTRIANGLESIATIPROC)
-extern PFNGLPNTRIANGLESIATIPROC glPNTrianglesiATI;
-extern PFNGLPNTRIANGLESFATIPROC glPNTrianglesfATI;
+extern PFNGLPNTRIANGLESIATIPROC blPNTrianglesiATI;
+extern PFNGLPNTRIANGLESFATIPROC blPNTrianglesfATI;
#endif
@@ -413,89 +415,89 @@ extern BL_EXTInfo RAS_EXT_support;
#ifdef GL_ARB_multitexture // defined in glext.h now...
extern int max_texture_units;
-extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
-extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTextureARB;
-extern PFNGLMULTITEXCOORD1DARBPROC glMultiTexCoord1dARB;
-extern PFNGLMULTITEXCOORD1DVARBPROC glMultiTexCoord1dvARB;
-extern PFNGLMULTITEXCOORD1FARBPROC glMultiTexCoord1fARB;
-extern PFNGLMULTITEXCOORD1FVARBPROC glMultiTexCoord1fvARB;
-extern PFNGLMULTITEXCOORD1IARBPROC glMultiTexCoord1iARB;
-extern PFNGLMULTITEXCOORD1IVARBPROC glMultiTexCoord1ivARB;
-extern PFNGLMULTITEXCOORD1SARBPROC glMultiTexCoord1sARB;
-extern PFNGLMULTITEXCOORD1SVARBPROC glMultiTexCoord1svARB;
-extern PFNGLMULTITEXCOORD2DARBPROC glMultiTexCoord2dARB;
-extern PFNGLMULTITEXCOORD2DVARBPROC glMultiTexCoord2dvARB;
-extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
-extern PFNGLMULTITEXCOORD2FVARBPROC glMultiTexCoord2fvARB;
-extern PFNGLMULTITEXCOORD2IARBPROC glMultiTexCoord2iARB;
-extern PFNGLMULTITEXCOORD2IVARBPROC glMultiTexCoord2ivARB;
-extern PFNGLMULTITEXCOORD2SARBPROC glMultiTexCoord2sARB;
-extern PFNGLMULTITEXCOORD2SVARBPROC glMultiTexCoord2svARB;
-extern PFNGLMULTITEXCOORD3DARBPROC glMultiTexCoord3dARB;
-extern PFNGLMULTITEXCOORD3DVARBPROC glMultiTexCoord3dvARB;
-extern PFNGLMULTITEXCOORD3FARBPROC glMultiTexCoord3fARB;
-extern PFNGLMULTITEXCOORD3FVARBPROC glMultiTexCoord3fvARB;
-extern PFNGLMULTITEXCOORD3IARBPROC glMultiTexCoord3iARB;
-extern PFNGLMULTITEXCOORD3IVARBPROC glMultiTexCoord3ivARB;
-extern PFNGLMULTITEXCOORD3SARBPROC glMultiTexCoord3sARB;
-extern PFNGLMULTITEXCOORD3SVARBPROC glMultiTexCoord3svARB;
-extern PFNGLMULTITEXCOORD4DARBPROC glMultiTexCoord4dARB;
-extern PFNGLMULTITEXCOORD4DVARBPROC glMultiTexCoord4dvARB;
-extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4fARB;
-extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fvARB;
-extern PFNGLMULTITEXCOORD4IARBPROC glMultiTexCoord4iARB;
-extern PFNGLMULTITEXCOORD4IVARBPROC glMultiTexCoord4ivARB;
-extern PFNGLMULTITEXCOORD4SARBPROC glMultiTexCoord4sARB;
-extern PFNGLMULTITEXCOORD4SVARBPROC glMultiTexCoord4svARB;
+extern PFNGLACTIVETEXTUREARBPROC blActiveTextureARB;
+extern PFNGLCLIENTACTIVETEXTUREARBPROC blClientActiveTextureARB;
+extern PFNGLMULTITEXCOORD1DARBPROC blMultiTexCoord1dARB;
+extern PFNGLMULTITEXCOORD1DVARBPROC blMultiTexCoord1dvARB;
+extern PFNGLMULTITEXCOORD1FARBPROC blMultiTexCoord1fARB;
+extern PFNGLMULTITEXCOORD1FVARBPROC blMultiTexCoord1fvARB;
+extern PFNGLMULTITEXCOORD1IARBPROC blMultiTexCoord1iARB;
+extern PFNGLMULTITEXCOORD1IVARBPROC blMultiTexCoord1ivARB;
+extern PFNGLMULTITEXCOORD1SARBPROC blMultiTexCoord1sARB;
+extern PFNGLMULTITEXCOORD1SVARBPROC blMultiTexCoord1svARB;
+extern PFNGLMULTITEXCOORD2DARBPROC blMultiTexCoord2dARB;
+extern PFNGLMULTITEXCOORD2DVARBPROC blMultiTexCoord2dvARB;
+extern PFNGLMULTITEXCOORD2FARBPROC blMultiTexCoord2fARB;
+extern PFNGLMULTITEXCOORD2FVARBPROC blMultiTexCoord2fvARB;
+extern PFNGLMULTITEXCOORD2IARBPROC blMultiTexCoord2iARB;
+extern PFNGLMULTITEXCOORD2IVARBPROC blMultiTexCoord2ivARB;
+extern PFNGLMULTITEXCOORD2SARBPROC blMultiTexCoord2sARB;
+extern PFNGLMULTITEXCOORD2SVARBPROC blMultiTexCoord2svARB;
+extern PFNGLMULTITEXCOORD3DARBPROC blMultiTexCoord3dARB;
+extern PFNGLMULTITEXCOORD3DVARBPROC blMultiTexCoord3dvARB;
+extern PFNGLMULTITEXCOORD3FARBPROC blMultiTexCoord3fARB;
+extern PFNGLMULTITEXCOORD3FVARBPROC blMultiTexCoord3fvARB;
+extern PFNGLMULTITEXCOORD3IARBPROC blMultiTexCoord3iARB;
+extern PFNGLMULTITEXCOORD3IVARBPROC blMultiTexCoord3ivARB;
+extern PFNGLMULTITEXCOORD3SARBPROC blMultiTexCoord3sARB;
+extern PFNGLMULTITEXCOORD3SVARBPROC blMultiTexCoord3svARB;
+extern PFNGLMULTITEXCOORD4DARBPROC blMultiTexCoord4dARB;
+extern PFNGLMULTITEXCOORD4DVARBPROC blMultiTexCoord4dvARB;
+extern PFNGLMULTITEXCOORD4FARBPROC blMultiTexCoord4fARB;
+extern PFNGLMULTITEXCOORD4FVARBPROC blMultiTexCoord4fvARB;
+extern PFNGLMULTITEXCOORD4IARBPROC blMultiTexCoord4iARB;
+extern PFNGLMULTITEXCOORD4IVARBPROC blMultiTexCoord4ivARB;
+extern PFNGLMULTITEXCOORD4SARBPROC blMultiTexCoord4sARB;
+extern PFNGLMULTITEXCOORD4SVARBPROC blMultiTexCoord4svARB;
#endif
#ifdef GL_ARB_shader_objects
-extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
-extern PFNGLGETHANDLEARBPROC glGetHandleARB;
-extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
-extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
-extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
-extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
-extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
-extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
-extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
-extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
-extern PFNGLVALIDATEPROGRAMARBPROC glValidateProgramARB;
-extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
-extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
-extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
-extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
-extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
-extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
-extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
-extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
-extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
-extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
-extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
-extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
-extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
-extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
-extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
-extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
-extern PFNGLUNIFORMMATRIX2FVARBPROC glUniformMatrix2fvARB;
-extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB;
-extern PFNGLUNIFORMMATRIX4FVARBPROC glUniformMatrix4fvARB;
-extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
-extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
-extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
-extern PFNGLGETATTACHEDOBJECTSARBPROC glGetAttachedObjectsARB;
-extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
-extern PFNGLGETACTIVEUNIFORMARBPROC glGetActiveUniformARB;
-extern PFNGLGETUNIFORMFVARBPROC glGetUniformfvARB;
-extern PFNGLGETUNIFORMIVARBPROC glGetUniformivARB;
-extern PFNGLGETSHADERSOURCEARBPROC glGetShaderSourceARB;
+extern PFNGLDELETEOBJECTARBPROC blDeleteObjectARB;
+extern PFNGLGETHANDLEARBPROC blGetHandleARB;
+extern PFNGLDETACHOBJECTARBPROC blDetachObjectARB;
+extern PFNGLCREATESHADEROBJECTARBPROC blCreateShaderObjectARB;
+extern PFNGLSHADERSOURCEARBPROC blShaderSourceARB;
+extern PFNGLCOMPILESHADERARBPROC blCompileShaderARB;
+extern PFNGLCREATEPROGRAMOBJECTARBPROC blCreateProgramObjectARB;
+extern PFNGLATTACHOBJECTARBPROC blAttachObjectARB;
+extern PFNGLLINKPROGRAMARBPROC blLinkProgramARB;
+extern PFNGLUSEPROGRAMOBJECTARBPROC blUseProgramObjectARB;
+extern PFNGLVALIDATEPROGRAMARBPROC blValidateProgramARB;
+extern PFNGLUNIFORM1FARBPROC blUniform1fARB;
+extern PFNGLUNIFORM2FARBPROC blUniform2fARB;
+extern PFNGLUNIFORM3FARBPROC blUniform3fARB;
+extern PFNGLUNIFORM4FARBPROC blUniform4fARB;
+extern PFNGLUNIFORM1IARBPROC blUniform1iARB;
+extern PFNGLUNIFORM2IARBPROC blUniform2iARB;
+extern PFNGLUNIFORM3IARBPROC blUniform3iARB;
+extern PFNGLUNIFORM4IARBPROC blUniform4iARB;
+extern PFNGLUNIFORM1FVARBPROC blUniform1fvARB;
+extern PFNGLUNIFORM2FVARBPROC blUniform2fvARB;
+extern PFNGLUNIFORM3FVARBPROC blUniform3fvARB;
+extern PFNGLUNIFORM4FVARBPROC blUniform4fvARB;
+extern PFNGLUNIFORM1IVARBPROC blUniform1ivARB;
+extern PFNGLUNIFORM2IVARBPROC blUniform2ivARB;
+extern PFNGLUNIFORM3IVARBPROC blUniform3ivARB;
+extern PFNGLUNIFORM4IVARBPROC blUniform4ivARB;
+extern PFNGLUNIFORMMATRIX2FVARBPROC blUniformMatrix2fvARB;
+extern PFNGLUNIFORMMATRIX3FVARBPROC blUniformMatrix3fvARB;
+extern PFNGLUNIFORMMATRIX4FVARBPROC blUniformMatrix4fvARB;
+extern PFNGLGETOBJECTPARAMETERFVARBPROC blGetObjectParameterfvARB;
+extern PFNGLGETOBJECTPARAMETERIVARBPROC blGetObjectParameterivARB;
+extern PFNGLGETINFOLOGARBPROC blGetInfoLogARB;
+extern PFNGLGETATTACHEDOBJECTSARBPROC blGetAttachedObjectsARB;
+extern PFNGLGETUNIFORMLOCATIONARBPROC blGetUniformLocationARB;
+extern PFNGLGETACTIVEUNIFORMARBPROC blGetActiveUniformARB;
+extern PFNGLGETUNIFORMFVARBPROC blGetUniformfvARB;
+extern PFNGLGETUNIFORMIVARBPROC blGetUniformivARB;
+extern PFNGLGETSHADERSOURCEARBPROC blGetShaderSourceARB;
#endif
#ifdef GL_ARB_vertex_shader
-extern PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB;
-extern PFNGLGETACTIVEATTRIBARBPROC glGetActiveAttribARB;
-extern PFNGLGETATTRIBLOCATIONARBPROC glGetAttribLocationARB;
+extern PFNGLBINDATTRIBLOCATIONARBPROC blBindAttribLocationARB;
+extern PFNGLGETACTIVEATTRIBARBPROC blGetActiveAttribARB;
+extern PFNGLGETATTRIBLOCATIONARBPROC blGetAttribLocationARB;
#endif
} /* namespace bgl */
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index 7a140fd0f7e..38dfb7836b2 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -41,6 +41,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#include <OpenGL/glu.h>
#else
@@ -1265,10 +1266,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1281,10 +1282,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1296,10 +1297,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1311,10 +1312,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1336,10 +1337,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1352,10 +1353,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1368,10 +1369,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1385,10 +1386,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1416,10 +1417,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1432,10 +1433,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1448,10 +1449,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1471,10 +1472,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1488,10 +1489,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1504,10 +1505,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti(
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1620,10 +1621,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1638,10 +1639,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1656,10 +1657,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1674,10 +1675,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1721,10 +1722,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1740,10 +1741,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1759,10 +1760,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
@@ -1777,10 +1778,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1824,10 +1825,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1840,10 +1841,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1856,10 +1857,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1896,10 +1897,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1913,10 +1914,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
@@ -1930,10 +1931,10 @@ void RAS_OpenGLRasterizer::IndexPrimitivesMulti_Ex(const vecVertexArray & vertex
if( vertexarray[(indexarray[vindex])].getFlag() & TV_2NDUV &&
vertexarray[(indexarray[vindex])].getUnit() == unit )
{
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV2());
continue;
}
- bgl::glMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
+ bgl::blMultiTexCoord2fvARB(GL_TEXTURE0_ARB+unit, vertexarray[(indexarray[vindex])].getUV1());
}
// ------------------------------
glVertex3fv(vertexarray[(indexarray[vindex])].getLocalXYZ());
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
index 77beed5ead1..b6d8e74c2d5 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
@@ -38,6 +38,7 @@
#include <windows.h>
#endif // WIN32
#ifdef __APPLE__
+#define GL_GLEXT_LEGACY 1
#include <OpenGL/gl.h>
#else
#include <GL/gl.h>