Название: Рендер в текстуру Отправлено: Torvald от Сентябрь 10, 2013, 08:56 Имеется несколько буферов для рендера в текстуру. Хочу реализовать размытие по гауссу (собственно реализовал), для этого нужно исходное изображение (первый фрейм буфер), буфер для размытия по горизонтали (второй) и буфер для размытия по вертикали (третий - результирующий).
На данный момент имеется такой код: QGLFramebufferObject - класс который использую для рендера в текстуру blurLightMapV, blurLightMapH - беферы для верт./гор. размытия Код Проблема: Как видно каждый бинд сопровождается множественными вызовами настройки вида/отображения. Все эти вызовы очень сильно снижают фпс. Вопрос: как то можно все это сократить? типа настроить заранее, а дальше просто вызывать bind(); //отрисовка release(); Название: Re: Рендер в текстуру Отправлено: Igors от Сентябрь 10, 2013, 11:41 Не понял зачем нужно 3 раза рендерить. Отрендерили в буфер - ну и размывайте создавая 2 QImage. Да, и техника "по строкам и столцам" может применяться к любому фильтру (не только Гаусс)
Название: Re: Рендер в текстуру Отправлено: Torvald от Сентябрь 10, 2013, 13:05 Не понял зачем нужно 3 раза рендерить. Отрендерили в буфер - ну и размывайте создавая 2 QImage. Да, и техника "по строкам и столцам" может применяться к любому фильтру (не только Гаусс) "Отрендерили в буфер" - первый буфер, "ну и размывайте создавая 2 QImage" - еще два.Зачем 2 QImage? Размытие используется в игре, поэтому важна скорость. Все буферы должны находиться в памяти гпу. QImage в гпу запихивать незачем) да и не представляю как и для чего. Мне нужно сократить вызовы opengl с цпу. Кажется нашел способ через дисплейные списки - вместо 27 вызовов получается один, правда пока еще не тестил. Название: Re: Рендер в текстуру Отправлено: Igors от Сентябрь 11, 2013, 08:03 Размытие используется в игре, поэтому важна скорость. Все буферы должны находиться в памяти гпу. QImage в гпу запихивать незачем) да и не представляю как и для чего. А толку если операция размытия все равно на CPU? Или Вы размываете аппаратно, но GPU - если так расскажите, мне об этом ничего не известноНазвание: Re: Рендер в текстуру Отправлено: Torvald от Сентябрь 11, 2013, 08:50 на гпу конечно, с помощью glsl.
Но дело не в размытии, а в сокращении количесва вызовов opengl функций при смене буфера. |