Panagiotis Christopoulos Charitos пре 13 година
родитељ
комит
9c9438b59b
2 измењених фајлова са 35 додато и 23 уклоњено
  1. 2 22
      anki/CMakeLists.txt
  2. 33 1
      anki/renderer/Drawer.cpp

+ 2 - 22
anki/CMakeLists.txt

@@ -1,24 +1,4 @@
-SET(ANKI_SUB_DIRS script renderer scene ui event 
-	input physics resource core misc gl collision math util)
+project(anki)
 
-SET(ANKI_LIBS "")
+add_executable(anki main.cpp)
 
-FOREACH(TMP ${ANKI_SUB_DIRS})
-	ADD_SUBDIRECTORY(${TMP})
-	SET(ANKI_LIBS ${ANKI_LIBS} anki${TMP})
-ENDFOREACH()
-
-ADD_LIBRARY(anki)
-
-TARGET_LINK_LIBRARIES(anki ${ANKI_LIBS} BulletSoftBody BulletDynamics 
-	BulletCollision LinearMath GLEWmx GLU GL jpeg SDL png python${PYTHON_VER}
-	boost_system boost_python boost_filesystem boost_thread boost_regex 
-	freetype)
-
-SET_TARGET_PROPERTIES(anki PROPERTIES LINKER_LANGUAGE CXX)
-
-# Install
-#
-INSTALL(TARGETS anki DESTINATION ${LIB_INSTALL_DIR})
-
-INSTALL(DIRECTORY ${ANKI_PROJECT_SOURCE_DIR}/anki DESTINATION "${INCLUDE_INSTALL_DIR}" FILES_MATCHING PATTERN "*.h" PATTERN .svn EXCLUDE)

+ 33 - 1
anki/renderer/Drawer.cpp

@@ -497,6 +497,26 @@ void SceneDebugDrawer::draw(const OctreeNode& octnode, uint depth,
 // SceneDrawer                                                                 =
 //==============================================================================
 
+/// Set the uniform using this visitor
+struct SetUniformVisitor: public boost::static_visitor<void>
+{
+	const ShaderProgramUniformVariable* uni;
+	uint* texUnit;
+
+	template<typename Type>
+	void operator()(const Type& x) const
+	{
+		uni->set(x);
+	}
+
+	void operator()(const TextureResourcePointer& x) const
+	{
+		uni->set(*x, *texUnit++);
+	}
+
+};
+
+
 //==============================================================================
 void SceneDrawer::setupShaderProg(
 	const PassLevelKey& key,
@@ -505,7 +525,19 @@ void SceneDrawer::setupShaderProg(
 {
 	const Material& mtl = renderable.getMaterial();
 	const ShaderProgram& sprog = mtl.getShaderProgram(key);
-	uint textunit;
+	uint textunit = 0;
+
+	sprog.bind();
+	
+	SetUniformVisitor vis;
+	vis.texUnit = &texunit;
+
+	for(const MaterialVariable& mv : mtl.getVariables())
+	{
+		vis.uni = &mv.getShaderProgramUniformVariable(key);
+
+		boost::visit(vis, mv.getVariant());
+	}
 }