Fix for part of bug #18496: issue with light state switching
when using Dome.
This commit is contained in:
@@ -68,8 +68,8 @@ void KX_BlenderRenderTools::BeginFrame(RAS_IRasterizer* rasty)
|
|||||||
{
|
{
|
||||||
m_clientobject = NULL;
|
m_clientobject = NULL;
|
||||||
m_lastlightlayer = -1;
|
m_lastlightlayer = -1;
|
||||||
m_lastlighting = false;
|
|
||||||
m_lastauxinfo = NULL;
|
m_lastauxinfo = NULL;
|
||||||
|
m_lastlighting = true; /* force disable in DisableOpenGLLights() */
|
||||||
DisableOpenGLLights();
|
DisableOpenGLLights();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -76,8 +76,8 @@ void GPC_RenderTools::BeginFrame(RAS_IRasterizer* rasty)
|
|||||||
{
|
{
|
||||||
m_clientobject = NULL;
|
m_clientobject = NULL;
|
||||||
m_lastlightlayer = -1;
|
m_lastlightlayer = -1;
|
||||||
m_lastlighting = false;
|
|
||||||
m_lastauxinfo = NULL;
|
m_lastauxinfo = NULL;
|
||||||
|
m_lastlighting = true; /* force disable in DisableOpenGLLights() */
|
||||||
DisableOpenGLLights();
|
DisableOpenGLLights();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -52,18 +52,18 @@ KX_Dome::KX_Dome (
|
|||||||
struct Text* warptext
|
struct Text* warptext
|
||||||
|
|
||||||
):
|
):
|
||||||
m_canvas(canvas),
|
dlistSupported(false),
|
||||||
m_rasterizer(rasterizer),
|
canvaswidth(-1), canvasheight(-1),
|
||||||
m_rendertools(rendertools),
|
|
||||||
m_engine(engine),
|
|
||||||
m_drawingmode(engine->GetDrawType()),
|
m_drawingmode(engine->GetDrawType()),
|
||||||
m_size(size),
|
m_size(size),
|
||||||
m_resolution(res),
|
m_resolution(res),
|
||||||
m_mode(mode),
|
m_mode(mode),
|
||||||
m_angle(angle),
|
m_angle(angle),
|
||||||
m_resbuffer(resbuf),
|
m_resbuffer(resbuf),
|
||||||
canvaswidth(-1), canvasheight(-1),
|
m_canvas(canvas),
|
||||||
dlistSupported(false)
|
m_rasterizer(rasterizer),
|
||||||
|
m_rendertools(rendertools),
|
||||||
|
m_engine(engine)
|
||||||
{
|
{
|
||||||
warp.usemesh = false;
|
warp.usemesh = false;
|
||||||
|
|
||||||
@@ -206,7 +206,7 @@ void KX_Dome::CalculateImageSize(void)
|
|||||||
canvasheight = m_canvas->GetHeight();
|
canvasheight = m_canvas->GetHeight();
|
||||||
|
|
||||||
m_buffersize = (canvaswidth > canvasheight?canvasheight:canvaswidth);
|
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;
|
int i = 0;
|
||||||
while ((1 << i) <= m_buffersize)
|
while ((1 << i) <= m_buffersize)
|
||||||
@@ -230,8 +230,6 @@ void KX_Dome::CalculateImageSize(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool KX_Dome::CreateDL(){
|
bool KX_Dome::CreateDL(){
|
||||||
int i,j;
|
|
||||||
|
|
||||||
dlistId = glGenLists((GLsizei) m_numimages);
|
dlistId = glGenLists((GLsizei) m_numimages);
|
||||||
if (dlistId != 0) {
|
if (dlistId != 0) {
|
||||||
if(m_mode == DOME_FISHEYE){
|
if(m_mode == DOME_FISHEYE){
|
||||||
@@ -409,7 +407,7 @@ y varies from -1 to 1
|
|||||||
u and v vary from 0 to 1
|
u and v vary from 0 to 1
|
||||||
i ranges from 0 to 1, if negative don't draw that mesh node
|
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;
|
int nodeX=0, nodeY=0;
|
||||||
|
|
||||||
vector<STR_String> columns, lines;
|
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_width = atoi(columns[0]);
|
||||||
warp.n_height = atoi(columns[1]);
|
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");
|
printf("Error: Warp Mesh File with insufficient data!\n");
|
||||||
return false;
|
return false;
|
||||||
}else{
|
}else{
|
||||||
@@ -1543,8 +1541,6 @@ void KX_Dome::Draw(void)
|
|||||||
|
|
||||||
void KX_Dome::DrawEnvMap(void)
|
void KX_Dome::DrawEnvMap(void)
|
||||||
{
|
{
|
||||||
int i,j;
|
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
@@ -1675,7 +1671,7 @@ void KX_Dome::DrawEnvMap(void)
|
|||||||
|
|
||||||
void KX_Dome::DrawDomeFisheye(void)
|
void KX_Dome::DrawDomeFisheye(void)
|
||||||
{
|
{
|
||||||
int i,j;
|
int i;
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
@@ -1759,7 +1755,7 @@ void KX_Dome::DrawDomeFisheye(void)
|
|||||||
|
|
||||||
void KX_Dome::DrawPanorama(void)
|
void KX_Dome::DrawPanorama(void)
|
||||||
{
|
{
|
||||||
int i,j;
|
int i;
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
@@ -1846,8 +1842,6 @@ void KX_Dome::DrawPanorama(void)
|
|||||||
|
|
||||||
void KX_Dome::DrawDomeWarped(void)
|
void KX_Dome::DrawDomeWarped(void)
|
||||||
{
|
{
|
||||||
int i,j;
|
|
||||||
|
|
||||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||||
glMatrixMode(GL_PROJECTION);
|
glMatrixMode(GL_PROJECTION);
|
||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
@@ -1880,10 +1874,6 @@ void KX_Dome::DrawDomeWarped(void)
|
|||||||
glEnable(GL_TEXTURE_2D);
|
glEnable(GL_TEXTURE_2D);
|
||||||
glColor3f(1.0,1.0,1.0);
|
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){
|
if (dlistSupported){
|
||||||
glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
|
glBindTexture(GL_TEXTURE_2D, domefacesId[m_numfaces]);
|
||||||
glCallList(dlistId + m_numfaces);
|
glCallList(dlistId + m_numfaces);
|
||||||
@@ -1935,3 +1925,4 @@ void KX_Dome::RenderDomeFrame(KX_Scene* scene, KX_Camera* cam, int i)
|
|||||||
cam->NodeSetLocalOrientation(camori);
|
cam->NodeSetLocalOrientation(camori);
|
||||||
cam->NodeUpdateGS(0.f);
|
cam->NodeUpdateGS(0.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -182,3 +182,4 @@ protected:
|
|||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -145,8 +145,6 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
|
|||||||
m_stereo(false),
|
m_stereo(false),
|
||||||
m_curreye(0),
|
m_curreye(0),
|
||||||
|
|
||||||
m_usedome(false),
|
|
||||||
|
|
||||||
m_logger(NULL),
|
m_logger(NULL),
|
||||||
|
|
||||||
// Set up timing info display variables
|
// Set up timing info display variables
|
||||||
@@ -164,7 +162,9 @@ KX_KetsjiEngine::KX_KetsjiEngine(KX_ISystem* system)
|
|||||||
m_overrideFrameColor(false),
|
m_overrideFrameColor(false),
|
||||||
m_overrideFrameColorR(0.0),
|
m_overrideFrameColorR(0.0),
|
||||||
m_overrideFrameColorG(0.0),
|
m_overrideFrameColorG(0.0),
|
||||||
m_overrideFrameColorB(0.0)
|
m_overrideFrameColorB(0.0),
|
||||||
|
|
||||||
|
m_usedome(false)
|
||||||
{
|
{
|
||||||
// Initialize the time logger
|
// Initialize the time logger
|
||||||
m_logger = new KX_TimeCategoryLogger (25);
|
m_logger = new KX_TimeCategoryLogger (25);
|
||||||
|
Reference in New Issue
Block a user