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:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-05-21 12:56:05 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-05-21 12:56:05 +0400
commit22883f9232da3df2bcba995bb0d84d4cf95803e8 (patch)
treed8654ce7acacc9359fdd23f5966a4f4fa0b4b84b /source/gameengine/BlenderRoutines
parente78ef29a593857d87b0c35c211d082c8caa80f7b (diff)
Query GL for max number of lights to use.
Diffstat (limited to 'source/gameengine/BlenderRoutines')
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp18
-rw-r--r--source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h3
2 files changed, 11 insertions, 10 deletions
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
index 3ce8437a55b..0a8eb2d4e08 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.cpp
@@ -69,6 +69,9 @@
KX_BlenderRenderTools::KX_BlenderRenderTools()
{
+ glGetIntegerv(GL_MAX_LIGHTS, (GLint*) &m_numgllights);
+ if (m_numgllights < 8)
+ m_numgllights = 8;
}
/**
@@ -343,16 +346,13 @@ int KX_BlenderRenderTools::applyLights(int objectlayer)
vec[3]= 1.0;
- for(count=0; count<8; count++)
+ for(count=0; count<m_numgllights; count++)
glDisable((GLenum)(GL_LIGHT0+count));
- count= 0;
-
//std::vector<struct RAS_LightObject*> m_lights;
std::vector<struct RAS_LightObject*>::iterator lit = m_lights.begin();
-
- for (lit = m_lights.begin(); !(lit==m_lights.end()); ++lit)
+ for (lit = m_lights.begin(), count = 0; !(lit==m_lights.end()) && count < m_numgllights; ++lit)
{
RAS_LightObject* lightdata = (*lit);
if (lightdata->m_layer & objectlayer)
@@ -410,11 +410,9 @@ int KX_BlenderRenderTools::applyLights(int objectlayer)
glLightfv((GLenum)(GL_LIGHT0+count), GL_SPECULAR, vec);
glEnable((GLenum)(GL_LIGHT0+count));
- glPopMatrix();
-
count++;
- if(count>7)
- break;
+
+ glPopMatrix();
}
}
@@ -435,3 +433,5 @@ RAS_IPolyMaterial* KX_BlenderRenderTools::CreateBlenderPolyMaterial(
ba,matname,tile,tilexrep,tileyrep,mode,transparant,lightlayer
,bIsTriangle,clientobject,(struct TFace*)tface);
}
+
+unsigned int KX_BlenderRenderTools::m_numgllights;
diff --git a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
index 91227967185..e8a789893ca 100644
--- a/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
+++ b/source/gameengine/BlenderRoutines/KX_BlenderRenderTools.h
@@ -51,7 +51,8 @@ class KX_BlenderRenderTools : public RAS_IRenderTools
void* m_lastblenderobject;
int m_lastlayer;
bool m_lastlighting;
-
+ static unsigned int m_numgllights;
+
public:
KX_BlenderRenderTools();