Конференция "Игры" » OpenGl Water Effect On Bitmap
 
  • antonn © (12.04.13 15:31) [20]
    да, кстати...

    > но нагрузка на процессор никуда не делась и оставить её,
    >  я не могу тк считаю дурным тоном нагружать процессор будущего
    > пользователя, зная что с использованием OpenGL можно возложить
    > задачу на ГПУ.

    имхо реализация на CPU и небольшая (ну или большая, как получится) загрузка его с лихвой перекроют собственные мучения с рендером и его вкрячиванием в программу, и возможными проблемами у пользователя потом (драйвера, другой мешающийся софт, железо (например на ноуте включение дискретной видеокарты может быть нежелательным для юзера))
  • Wladimir1987 © (13.04.13 11:35) [21]
    Sapersky

    > glTranslatef(0.5,0.5,0) к текстурной трансформации, или
    > 0.5,0,0

    с (0.5,0.5,0) очень сильное увеличение, а с (0.5,0,0) картинка получается однотонно серой :)

    antonn

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

    исходил из того что OpenGL по умолчанию вместе с виндой идёт и процессор не грузит почти и видеокарту, ну или грузит последнюю, но несильно. Ну и он всё ж немного красивее
    Но в целом согласен и с радостью использую ЦПУ-шную реализацию! :) Надеюсь у Sapersky получится оптимизировать второй пример, а потом можно как Вы предложили фиксировать fps таймером скажем на 90, чтоб и загрузки процессора практически не было и анимация быстрая :
  • О-Сознание (13.04.13 15:02) [22]

    > Wladimir1987 ©   (11.04.13 16:19)  


    См. примеры шейдеров.
  • Sapersky (13.04.13 17:37) [23]
    Может, после каждой итерации присваивать крайним пикселям значения [крайних-1]?

    Хотя нет, в TMainForm.simulEdges() это и делается - но на отражения никак не влияет.

    с (0.5,0.5,0) очень сильное увеличение, а с (0.5,0,0) картинка получается однотонно серой :)

    Точно к текстурной трансформации добавляешь? Т.е. между
    glMatrixMode(GL_TEXTURE);
    и
    glMatrixMode(GL_MODELVIEW);
    если да - выложи свою текстуру.

    Надеюсь у Sapersky получится оптимизировать второй пример, а потом можно как Вы предложили фиксировать fps таймером скажем на 90, чтоб и загрузки процессора практически не было и анимация быстрая

    Совсем без нагрузки не получится, разве что в маленьком окне.
    Проверил ради интереса пример из [9] на 1920*1080 - как раз 90 FPS с полной загрузкой i5. Но не ко всякому 1920*1080 прилагается i5.
  • Wladimir1987 © (13.04.13 21:08) [24]

    > Точно к текстурной трансформации добавляешь? Т.е. между

    да, между, те код как и на пред. странице в сообщении нр. 13, только цифры менял. Текстура 256x256. Кстати, а можно сделать текстуру больше размером. Оригинальная картинка размером 337 на 590, но когда я загружаю её, то она тераяет цвета, а та что 256x256 растягивается и получается нечёткой
    вот текстура + оригинал http://sendfile.su/uploaded.php?ok=794400&err=0

    > Совсем без нагрузки не получится, разве что в маленьком
    > окне.
    > Проверил ради интереса пример из [9] на 1920*1080 - как
    > раз 90 FPS с полной загрузкой i5. Но не ко всякому 1920*1080
    > прилагается i5.

    Ну нагрузка будет это ни страшно, но скорость в 90 FPS при разрешении (внимание!) 1920*1080 и думаю это очень быстро! :)
    У меня i7 в ноуте и скорость при картинке 337 на 590 максимум 120+-10 fps
  • Sapersky (13.04.13 22:55) [25]
    "Выцветание" - это глюк загрузки картинки "некруглой" ширины. Если обрезать до 332, скажем - нормально загружается. Можно поправить функцию загрузки, но проще наверное найти нормальную загрузку OGL-текстуры в сети.
    За исключением этого размеры в принципе любые.

    Как бороться с раздвоенностью картинки при выводе в пропорциональном масштабе я не знаю. Теоретически должно помогать такое:
     glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);  // или GL_CLAMP_TO_EDGE
     glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
    но не помогает.
  • Wladimir1987 © (13.04.13 23:34) [26]
    Sapersky
    Ничего страшного, если пример с OGL трудно "оседлать" ;) то ну его!
    Можно узнать насчёт реализации на ЦПУ? На ЦПУ тоже очень классный пример!
    на прошлой странице Вы писали о

    > Хотя это не самое узкое место, просто в оригинале сделано
    > криво - 6 вызовов функции на пиксель.

    апдейт MBo пробовал, скорость обработки действительно возросла и хотел бы узнать насчет вашей оптимизации. Я был бы рад снижению нагрузки на цпу не в ущерб качеству, но в педелах разумного, те оптимизации алгоритма, настолько, насколько возможно!
  • Sapersky (16.04.13 12:34) [27]
    Выложил свой софтверный пример:
    http://pda.delphimaster.net/?id=1366101219&n=7
 
Конференция "Игры" » OpenGl Water Effect On Bitmap
Есть новые Нет новых   [118240   +21][b:0][p:0]