Самый быстрый метод для блаженства из пиксельного буфера в контекст устройства

StackOverflow https://stackoverflow.com/questions/4721078

Вопрос

Добрый вечер,

У меня есть несколько 32-разрядных изображений в буферах памяти, которые я хотел бы «блики» в контексте устройства, быстро. Скорость - это проблема здесь, потому что буфер будет постоянно манипулировать и необходимо неоднократно отложить в DC.

Глубина цвета буфера составляет 32 бит, поэтому он уже находится в формате DIB, ожидаемого SetDibits (). Тем не менее, это довольно громоздко, поскольку цель растрового изображения SetDibits () уже не может быть выбран в DC до работы. Таким образом, мне нужно будет постоянно поменять растровый карту постоянного тока, вызовать SetDibits (), поменять растровый карту обратно в DC, а затем отлюбить DC в DC окна. Для меня это кажется много рабочей нагрузки на процессоре и слишком много ветвления в API Windows; Слишком много для оптимальной производительности.

Я был бы заинтересован в использовании DirectX, если он не заставил меня использовать контексты устройств для 2D -операций или загружать текстуры в видео память перед их отображением, потому что содержимое изображения постоянно меняется.

Мой вопрос простой (несмотря на долгую запись). Как бы я был самым быстрым способом, чтобы полюбить изображение из пиксельного буфера в памяти на экране? Прямой доступ к пиксельному буферу DC был бы великолепен, но я знаю, что этого не произойдет.

Спасибо, что прочитали мою длинную рецензию.

Это было полезно?

Решение

Есть метод API Создано Чтобы создать DIB, приложения могут писать напрямую. Это позволяет непрерывно обновлять растровый карту (либо MEMCOPY, либо непосредственно писать его).

См. Статью MSDN для получения более подробной информации.

Доступ к растровому карту должен быть синхронизирован. Сделайте это, вызывая функцию Gdiflush.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top