Пример использования 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 = 0; texData.width = 64; texData.height = 64; texData.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(2, 0, 0));
scene->rootNode()->addChild(monitor);
// тут 0 или 1 индекс текстуры на котором показывать отрендереную сцену
monitor->material(0).textureDiffuse = target.textures[0];