Тема: C3D Engine
Показать сообщение отдельно
Старый 27.07.2012, 11:44   #171
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Добавил callback класс для работы с шейдерами и entity - можно творить что угодно
выглядит это следующим образом:
class SHCallback : public ocge::IShaderCallback
{
	ocge::Oint mycolor;
public:
	void onCreate(ocge::IShader* shader)
	{
		mycolor = shader->getUniformHandle("mycolor");
	}
	void onEntityRender(ocge::IShader* shader, ocge::IEntity* entity)
	{
		if(entity->getName() == "cube")
			shader->setUniform4f(mycolor,0,1,0,1);
		else
			shader->setUniform4f(mycolor,1,0,0,1);
	}
};
ocge::IShader* cbshader = engine->createShader(sh_vert, sh_frag);
	cbshader->setCallback(new SHCallback());
cube->setShader(cbshader);
Чорт. Никак не зарелизю бэтку... стока в голову лезет идей, которыми я хочу поделиться.

еще я сделал автоматическую генерацию шадоу мапы, если включена функция в источнике освещения, и можно получить доступ к ней из шейдера (шадоу мапа берется из первого источника освещения, но есть возможность вытащить из любого) пока что только directional. Если есть желание у программиста, то естественно, он вообще все сам может написать (работу с освещением имеется ввиду)
(Offline)
 
Ответить с цитированием