[Bf-blender-cvs] [608ee3e] master: BGE: Allow access to original texture openGL Bind code/Id/Number

Ulysse Martin noreply at git.blender.org
Thu Feb 18 12:15:34 CET 2016


Commit: 608ee3e0734cc307c282a49518c595c674bbb9f0
Author: Ulysse Martin
Date:   Thu Feb 18 11:56:25 2016 +0100
Branches: master
https://developer.blender.org/rB608ee3e0734cc307c282a49518c595c674bbb9f0

BGE: Allow access to original texture openGL Bind code/Id/Number

This patch adds a python method to get openGL bind code of material's texture according to the texture slot.

Example:
import bge

cont = bge.logic.getCurrentController()
own = cont.owner

bindId = own.meshes[0].materials[0].getTextureBindcode(0)
Test file: http://www.pasteall.org/blend/40679

This can be used to play with texture in openGL, for example, remove mipmap on the texture or play with all wrapping or filtering options.
And this can be used to learn openGL with Blender.

Reviewers: TwisterGE, kupoman, moguri, panzergame

Reviewed By: TwisterGE, kupoman, moguri, panzergame

Projects: #game_engine

Differential Revision: https://developer.blender.org/D1804

===================================================================

M	doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
M	source/gameengine/Ketsji/KX_BlenderMaterial.cpp
M	source/gameengine/Ketsji/KX_BlenderMaterial.h

===================================================================

diff --git a/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst b/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
index 17f5403..ece2a65 100644
--- a/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
+++ b/doc/python_api/rst/bge_types/bge.types.KX_BlenderMaterial.rst
@@ -89,6 +89,15 @@ base class --- :class:`PyObjectPlus`
       :return: the material's shader
       :rtype: :class:`BL_Shader`
 
+   .. method:: getTextureBindcode(textureslot)
+
+      Returns the material's texture OpenGL bind code/id/number/name.
+
+      :arg textureslot: Specifies the texture slot number
+      :type textureslot: integer
+      :return: the material's texture OpenGL bind code/id/number/name
+      :rtype: integer
+
    .. attribute:: alpha
 
       The material's alpha transparency.
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index 1d185d5..476fbd2 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -972,6 +972,7 @@ PyMethodDef KX_BlenderMaterial::Methods[] =
 {
 	KX_PYMETHODTABLE( KX_BlenderMaterial, getShader ),
 	KX_PYMETHODTABLE( KX_BlenderMaterial, getMaterialIndex ),
+	KX_PYMETHODTABLE( KX_BlenderMaterial, getTextureBindcode ),
 	KX_PYMETHODTABLE( KX_BlenderMaterial, setBlending ),
 	{NULL,NULL} //Sentinel
 };
@@ -1325,4 +1326,20 @@ KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setBlending , "setBlending( bge.logic.sr
 	return NULL;
 }
 
+KX_PYMETHODDEF_DOC(KX_BlenderMaterial, getTextureBindcode, "getTextureBindcode(texslot)")
+{
+	unsigned int texslot;
+	if (!PyArg_ParseTuple(args, "i:texslot", &texslot)) {
+		PyErr_SetString(PyExc_ValueError, "material.getTextureBindcode(texslot): KX_BlenderMaterial, expected an int.");
+		return NULL;
+	}
+	Image *ima = getImage(texslot);
+	if (ima) {
+		unsigned int *bindcode = ima->bindcode;
+		return PyLong_FromLong(*bindcode);
+	}
+	PyErr_SetString(PyExc_ValueError, "material.getTextureBindcode(texslot): KX_BlenderMaterial, invalid texture slot.");
+	return NULL;
+}
+
 #endif // WITH_PYTHON
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index df089cb..a3d10c0 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -133,6 +133,7 @@ public:
 	KX_PYMETHOD_DOC(KX_BlenderMaterial, getMaterialIndex);
 	KX_PYMETHOD_DOC(KX_BlenderMaterial, getTexture);
 	KX_PYMETHOD_DOC(KX_BlenderMaterial, setTexture);
+	KX_PYMETHOD_DOC(KX_BlenderMaterial, getTextureBindcode);
 
 	KX_PYMETHOD_DOC(KX_BlenderMaterial, setBlending);
 #endif  /* WITH_PYTHON */




More information about the Bf-blender-cvs mailing list