[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [17333] trunk/blender/source/gameengine: VideoTexture: Add support for GLSL.

Benoit Bolsee benoit.bolsee at online.be
Wed Nov 5 14:22:14 CET 2008


Revision: 17333
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=17333
Author:   ben2610
Date:     2008-11-05 14:22:10 +0100 (Wed, 05 Nov 2008)

Log Message:
-----------
VideoTexture: Add support for GLSL. FIx small printout bug in Exception printout

Modified Paths:
--------------
    trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
    trunk/blender/source/gameengine/VideoTexture/Exception.cpp
    trunk/blender/source/gameengine/VideoTexture/Texture.cpp
    trunk/blender/source/gameengine/VideoTexture/Texture.h

Modified: trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h	2008-11-05 11:42:34 UTC (rev 17332)
+++ trunk/blender/source/gameengine/Ketsji/KX_BlenderMaterial.h	2008-11-05 13:22:10 UTC (rev 17333)
@@ -70,6 +70,9 @@
 	BL_Texture * getTex (unsigned int idx) { 
 		return (idx < MAXTEX) ? mTextures + idx : NULL; 
 	}
+	Image * getImage (unsigned int idx) { 
+		return (idx < MAXTEX && mMaterial) ? mMaterial->img[idx] : NULL; 
+	}
 
 	// for ipos
 	void UpdateIPO(

Modified: trunk/blender/source/gameengine/VideoTexture/Exception.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Exception.cpp	2008-11-05 11:42:34 UTC (rev 17332)
+++ trunk/blender/source/gameengine/VideoTexture/Exception.cpp	2008-11-05 13:22:10 UTC (rev 17333)
@@ -168,15 +168,15 @@
 		}
 		// add result code
 		// length of result code
-		const size_t rsltSize = 10;
+		const size_t rsltSize = 11;
 		// delimit description
 		const char delimRslt[] = ": ";
 		// set text of description
 		char rsltTxt[rsltSize];
 		std::ostrstream os(rsltTxt, rsltSize);
-		os << std::hex << m_hRslt << delimRslt;
+		os << std::hex << m_hRslt << delimRslt << '\0';
 		// copy result to description
-		m_desc.insert(0, rsltTxt, rsltSize);
+		m_desc.insert(0, rsltTxt);
 		// copy exception description to last exception string
 		m_lastError = m_desc;
 	}

Modified: trunk/blender/source/gameengine/VideoTexture/Texture.cpp
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Texture.cpp	2008-11-05 11:42:34 UTC (rev 17332)
+++ trunk/blender/source/gameengine/VideoTexture/Texture.cpp	2008-11-05 13:22:10 UTC (rev 17333)
@@ -54,9 +54,6 @@
 { exp.report(); }
 
 
-// are Blender materials used
-bool blendMats = false;
-
 // Blender GameObject type
 BlendType<KX_GameObject> gameObjectType ("KX_GameObject");
 
@@ -198,15 +195,22 @@
 			if (mat != NULL)
 			{
 				// is it blender material or polygon material
-				blendMats = (mat->GetFlag() & RAS_BLENDERMAT) != 0;
-				if (blendMats)
+				if (mat->GetFlag() & RAS_BLENDERGLSL) 
+				{
+					self->m_imgTexture = static_cast<KX_BlenderMaterial*>(mat)->getImage(texID);
+					self->m_useMatTexture = false;
+				} else if (mat->GetFlag() & RAS_BLENDERMAT)
+				{
 					// get blender material texture
 					self->m_matTexture = static_cast<KX_BlenderMaterial*>(mat)->getTex(texID);
+					self->m_useMatTexture = true;
+				}
 				else
 				{
 					// get texture pointer from polygon material
 					MTFace * tface = static_cast<KX_PolygonMaterial*>(mat)->GetMTFace();
 					self->m_imgTexture = (Image*)tface->tpage;
+					self->m_useMatTexture = false;
 				}
 			}
 			// check if texture is available, if not, initialization failed
@@ -246,7 +250,7 @@
 	{
 		self->m_orgSaved = false;
 		// restore original texture code
-		if (blendMats)
+		if (self->m_useMatTexture)
 			self->m_matTexture->swapTexture(self->m_orgTex);
 		else
 			self->m_imgTexture->bindcode = self->m_orgTex;
@@ -292,7 +296,7 @@
 				{
 					self->m_orgSaved = true;
 					// save original image code
-					if (blendMats)
+					if (self->m_useMatTexture)
 						self->m_orgTex = self->m_matTexture->swapTexture(self->m_actTex);
 					else
 					{

Modified: trunk/blender/source/gameengine/VideoTexture/Texture.h
===================================================================
--- trunk/blender/source/gameengine/VideoTexture/Texture.h	2008-11-05 11:42:34 UTC (rev 17332)
+++ trunk/blender/source/gameengine/VideoTexture/Texture.h	2008-11-05 13:22:10 UTC (rev 17333)
@@ -39,9 +39,11 @@
 {
 	PyObject_HEAD
 
+	// texture is using blender material
+	bool m_useMatTexture;
+
 	// video texture bind code
 	unsigned int m_actTex;
-
 	// original texture bind code
 	unsigned int m_orgTex;
 	// original texture saved
@@ -70,9 +72,6 @@
 // Texture type description
 extern PyTypeObject TextureType;
 
-// usage of Blender materials
-extern bool blendMats;
-
 // load texture
 void loadTexture (unsigned int texId, unsigned int * texture, short * size,
 				  bool mipmap = false);





More information about the Bf-blender-cvs mailing list