Fix for part of bug #18496: issue with light state switching

when using Dome.
This commit is contained in:
Brecht Van Lommel 2009-04-23 13:30:34 +00:00
parent 0d347e12ea
commit 70f1b45430
5 changed files with 20 additions and 28 deletions

@ -68,8 +68,8 @@ void KX_BlenderRenderTools::BeginFrame(RAS_IRasterizer* rasty)
{
m_clientobject = NULL;
m_lastlightlayer = -1;
m_lastlighting = false;
m_lastauxinfo = NULL;
m_lastlighting = true; /* force disable in DisableOpenGLLights() */
DisableOpenGLLights();
}

@ -76,8 +76,8 @@ void GPC_RenderTools::BeginFrame(RAS_IRasterizer* rasty)
{
m_clientobject = NULL;
m_lastlightlayer = -1;
m_lastlighting = false;
m_lastauxinfo = NULL;
m_lastlighting = true; /* force disable in DisableOpenGLLights() */
DisableOpenGLLights();
}

@ -52,18 +52,18 @@ KX_Dome::KX_Dome (
struct Text* warptext
):
m_canvas(canvas),
m_rasterizer(rasterizer),
m_rendertools(rendertools),
m_engine(engine),
dlistSupported(false),
canvaswidth(-1), canvasheight(-1),
m_drawingmode(engine->GetDrawType()),
m_size(size),
m_resolution(res),
m_mode(mode),
m_angle(angle),
m_resbuffer(resbuf),
canvaswidth(-1), canvasheight(-1),
dlistSupported(false)
m_canvas(canvas),
m_rasterizer(rasterizer),
m_rendertools(rendertools),
m_engine(engine)
{
warp.usemesh = false;
@ -206,7 +206,7 @@ void KX_Dome::CalculateImageSize(void)
canvasheight = m_canvas->GetHeight();
m_buffersize = (canvaswidth > canvasheight?canvasheight:canvaswidth);
m_buffersize *= m_resbuffer; //reduce buffer size for better performance
m_buffersize = (int)(m_buffersize*m_resbuffer); //reduce buffer size for better performance
int i = 0;
while ((1 << i) <= m_buffersize)
@ -230,8 +230,6 @@ void KX_Dome::CalculateImageSize(void)
}
bool KX_Dome::CreateDL(){
int i,j;
dlistId = glGenLists((GLsizei) m_numimages);
if (dlistId != 0) {
if(m_mode == DOME_FISHEYE){
@ -409,7 +407,7 @@ y varies from -1 to 1
u and v vary from 0 to 1
i ranges from 0 to 1, if negative don't draw that mesh node
*/
int i,j,k;
int i;
int nodeX=0, nodeY=0;
vector<STR_String> columns, lines;
@ -431,7 +429,7 @@ i ranges from 0 to 1, if negative don't draw that mesh node
warp.n_width = atoi(columns[0]);
warp.n_height = atoi(columns[1]);
if (lines.size() < 2 + (warp.n_width * warp.n_height)){
if ((int)lines.size() < 2 + (warp.n_width * warp.n_height)){
printf("Error: Warp Mesh File with insufficient data!\n");
return false;
}else{
@ -1543,8 +1541,6 @@ void KX_Dome::Draw(void)
void KX_Dome::DrawEnvMap(void)
{
int i,j;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@ -1675,7 +1671,7 @@ void KX_Dome::DrawEnvMap(void)
void KX_Dome::DrawDomeFisheye(void)
{
int i,j;
int i;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
@ -1759,7 +1755,7 @@ void KX_Dome::DrawDomeFisheye(void)
void KX_Dome::DrawPanorama(void)
{
int i,j;
int i;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@ -1846,8 +1842,6 @@ void KX_Dome::DrawPanorama(void)
void KX_Dome::DrawDomeWarped(void)
{
int i,j;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
@ -1880,10 +1874,6 @@ void KX_Dome::DrawDomeWarped(void)
glEnable(GL_TEXTURE_2D);
glColor3f(1.0,1.0,1.0);
float uv_width = (float)(warp.bufferwidth-1) / warp.imagewidth;
float uv_height = (float)(warp.bufferheight-1) / warp.imageheight;
if (dlistSupported){
glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
glCallList(dlistId + m_numfaces);
@ -1934,4 +1924,5 @@ void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i)
// restore the original orientation
cam->NodeSetLocalOrientation(camori);
cam->NodeUpdateGS(0.f);
}
}

@ -181,4 +181,5 @@ protected:
KX_KetsjiEngine* m_engine;
};
#endif
#endif

@ -145,8 +145,6 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_stereo(false),
m_curreye(0),
m_usedome(false),
m_logger(NULL),
// Set up timing info display variables
@ -164,7 +162,9 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
m_overrideFrameColor(false),
m_overrideFrameColorR(0.0),
m_overrideFrameColorG(0.0),
m_overrideFrameColorB(0.0)
m_overrideFrameColorB(0.0),
m_usedome(false)
{
// Initialize the time logger
m_logger = new KX_TimeCategoryLogger (25);