Можно ли использовать указатели для прямой записи (низкого уровня) в окно без использования Bitblt? - PullRequest
1 голос
/ 25 декабря 2010

Я написал анаглифический фильтр, который смешивает два изображения в одно стереографическое изображение.Это быстрая процедура, которая работает с одним пикселем за раз.Прямо сейчас я использую указатели для вывода каждого вычисленного пикселя в растровое изображение памяти, а затем помещаю все это изображение в окно.

Это кажется мне излишним.Я бы предпочел скопировать каждый пиксель прямо на экран, так как моя процедура анаглифа довольно быстрая.Можно ли обойти Bitblt и просто указать указатель прямо туда, куда Bitblt скопировал бы его?

Ответы [ 3 ]

1 голос
/ 25 декабря 2010

Вы не можете рисовать прямо на экран из окон, потому что память видеокарты не обязательно отображается в каком-либо вменяемом порядке.

Блинтование на экране удивительно быстро.вы не заглядываете после каждого пикселя - только когда вы хотите, чтобы новый результат отображался, даже тогда нет смысла делать это быстрее, чем обновление на вашем экране - вероятно, 60 Гц

1 голос
/ 25 декабря 2010

Вы ищете что-то вроде glMapBuffer в OpenGL, но обращаетесь непосредственно к экрану.

Но запись в пиксель памяти графического процессора на пиксель - более медленная операция, которую вы можете сделать.PCI работает быстрее, если вы отправляете большие потоки данных.Кроме того, есть много проблем, если вы пишете и читаете данные.Также важен макет пикселя (см. Документацию nvidia о быстрой передаче текстур).Bitblt сделает это за вас оптимизированным драйвером.

1 голос
/ 25 декабря 2010

Я уверен, что это возможно, но вы действительно не хотите этого делать. Гораздо эффективнее нарисовать весь шаблон сразу.

...