Revision: 14683
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14683
Author: ben2610
Date: 2008-05-04 23:14:38 +0200 (Sun, 04 May 2008)
Log Message:
-----------
Fix BGE bug in patch #8724 (memory optimization): serious problem with alpha
texture when Use Blender Material is active and several objects have same
texture. This bug messes up greatly with OpenGL texture. The GE is not usable
without this fix.
Modified Paths:
--------------
trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
Modified: trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
2008-05-04 17:03:10 UTC (rev 14682)
+++ trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
2008-05-04 21:14:38 UTC (rev 14683)
@@ -84,6 +84,7 @@
mScene(scene),
mUserDefBlend(0),
mModified(0),
+ mConstructed(false),
mPass(0)
{
@@ -119,7 +120,9 @@
KX_BlenderMaterial::~KX_BlenderMaterial()
{
// cleanup work
- OnExit();
+ if (mConstructed)
+ // clean only if material was actually used
+ OnExit();
}
@@ -138,6 +141,10 @@
void KX_BlenderMaterial::OnConstruction()
{
+ if (mConstructed)
+ // when material are reused between objects
+ return;
+
// for each unique material...
int i;
for(i=0; i<mMaterial->num_enabled; i++) {
@@ -148,19 +155,20 @@
}
if(!mTextures[i].InitCubeMap(i, mMaterial->cubemap[i] )
)
spit("unable to initialize image("<<i<<") in
"<<
- mMaterial->matname<< ", image
will not be available");
+ mMaterial->matname<< ", image
will not be available");
}
else {
if( mMaterial->img[i] ) {
if( ! mTextures[i].InitFromImage(i,
mMaterial->img[i], (mMaterial->flag[i] &MIPMAP)!=0 ))
spit("unable to initialize
image("<<i<<") in "<<
- mMaterial->matname<< ", image
will not be available");
+ mMaterial->matname<< ", image
will not be available");
}
}
}
mBlendFunc[0] =0;
mBlendFunc[1] =0;
+ mConstructed = true;
}
void KX_BlenderMaterial::OnExit()
Modified: trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h 2008-05-04
17:03:10 UTC (rev 14682)
+++ trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h 2008-05-04
21:14:38 UTC (rev 14683)
@@ -93,6 +93,7 @@
bool mUserDefBlend;
unsigned int mBlendFunc[2];
bool mModified;
+ bool mConstructed; // if false,
don't clean on exit
void ActivatGLMaterials( RAS_IRasterizer* rasty )const;
void ActivateTexGen( RAS_IRasterizer *ras ) const;
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs