Конференция "Media" » FastLIB (FastDIB) 4.0
 
  • Wladimir1987 © (09.09.13 14:42) [40]
    Sapersky а если рисовать через Direct2D быстрее будет?
  • Sapersky (09.09.13 20:07) [41]
    Думаю, не будет.
    Я сравнивал вывод картинки из системной памяти на экран через GDI/DX7/DX9  - получилось более-менее одинаково, причём GDI показал самые стабильные результаты на разном железе. До D2D (фактически D3D11) ещё не добрался, но вряд ли там что-то принципиально изменилось.

    К тому же расчёт тормозит гораздо больше, чем рисование. В идеале надо переводить на шейдеры или OpenCL, примерно так:
    http://www.patriciogonzalezvivo.com/blog/?p=657
    Проблема с рисованием при этом отпадает сама собой - картинка уже в видеопамяти.
  • Wladimir1987 © (10.09.13 16:43) [42]
    Sapersky
    У Вас есть возможность перевести? Был бы очень благодарен!
    Мне пока знаний не хватает :(
    Кстати симуляция воды на виде по ссылке не такая красивая как у Вас. Напоминает тот пример, что я раньше находил
    исходник я удалил за ненадобностью, но вот скрин нашёл
    http://www.decoding.dax.ru/download/units/graph/WaterEffect.png
  • Sapersky (15.09.13 01:36) [43]
    Вряд ли это единственная статья во всей сети, ищи на русском по запросу "шейдер вода 2D" или как-то в этом духе.
    Что касается красоты - сишная демка, на основе которой я писал свою, тоже выдавала не слишком красивую картинку. Но я перешёл с 8-битных буферов на 16/32-битные и добавил освещение. С 3D-графикой такое тоже можно сделать.
  • Wladimir1987 © (18.09.13 17:27) [44]
    Sapersky

    > ищи на русском по запросу "шейдер вода 2D" или как-то в
    > этом духе.

    искал, и на английском тоже - ничего интересного

    > В идеале надо переводить на шейдеры или OpenCL

    немного прочитал про OpenCL - очень интересно. Скорость и платформонезависимость большой плюс. Вот только что ты имеешь виду?
    передавать вычисление алгоритма воды библиотеке или создавать потоки с её помощью?
    Судя по http://lab4.fme.vutbr.cz/heatlab/OpenCLforDelphi.html#Where_to_get_OpenCL_drivers_for_you
    бенчмарку при переводе на OpenCL может отпасть необходимость в многопоточности?
  • Sapersky (18.09.13 18:25) [45]
    Да, переносить вычисления.
    OpenCL'ное ядро (kernel) пишется так, чтобы обрабатывать один элемент данных, пиксель в данном случае. А OpenCL его вызывает для всех элементов/пикселей, автоматически распараллеливая по ядрам процессора или видеокарты.
    С шейдерами тот же самый принцип.
    И кстати, если захочется сделать эффективный вывод картинки на экран (не гонять её в системную память, потом обратно в видео через GDI), то всё равно придётся использовать OGL/DX, передавая им OpenCL'ные данные.
 
Конференция "Media" » FastLIB (FastDIB) 4.0
Есть новые Нет новых   [134427   +38][b:0][p:0]