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

Пример использования MRT, на не поддерживаемом устройстве не будет работать MRT, и шейдер с gl_FragData[1] не скомпилируется, ну это и понятно. (libc++abi.dylib: terminating with uncaught exception of type std::runtime_error: IShader compilation failed: ERROR: 0:6: Index 1 beyond bounds (size 1))

Ce::SRenderTarget target;
    
target.node light;
    
// тут мы добавляем две текстуры в таргет
    
target.textures.push_back(core->driver()->createTexture());
    
target.textures.push_back(core->driver()->createTexture());
    
Ce::STextureData texData;
    
texData.buffer 0texData.width 64texData.height 64texData.textureFormat Ce::E_TF_RGB;
    
target.textures[0]->setData(texData);
    
target.textures[1]->setData(texData);
    
// тут мы задаем шейдер, которым будет рисоваться сцена (в моем случае я рисую все красным в 0 текстуру и зеленым цветом в 1 текстуру, чтобы проверить МРТ)
    
target.programOverload program;
    
core->addRenderTarget(target);

    
auto monitor core->createPreparedNode(Ce::E_PN_CUBE);
    
monitor->setPosition(glm::vec3(200));
    
scene->rootNode()->addChild(monitor);
    
// тут 0 или 1 индекс текстуры на котором показывать отрендереную сцену
    
monitor->material(0).textureDiffuse target.textures[0]; 
(Offline)
 
Ответить с цитированием