Отображение цветовых данных в окне, Win32

#c #windows

#c #Windows

Вопрос:

Итак, я могу создать массив цветовых данных (проецируя 3D-модели, если вам интересно), но мне нужно отобразить их в окне Win32. Я знаю, что мог бы нарисовать его попиксельно, но это очень медленно. Я знаю, что мне, вероятно, понадобится BitBlt(); Мне это все равно понадобится, если я буду использовать двойную буферизацию. Я видел, как отображать .bmp в окне, но у меня нет .bmp. Я думаю, я мог бы СОЗДАТЬ .bmp, но здесь я стремлюсь к скорости.

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

Комментарии:

1. Почему бы не взглянуть на SDL . Просто найдите в источниках нужные вам части.

2. Рассмотрите возможность переноса этого вопроса в Stack Overflow

Ответ №1:

Чтобы скопировать ваш буфер в DC, вы должны создать BITMAPINFO, затем использовать SetDIBitsToDevice() с hDC экрана, указателем на ваш буфер и созданным BITMAPINFO.

Вы можете найти хорошую отправную точку для двойной буферизации здесь .

Комментарии:

1. Если пиксельный формат массива цветовых данных может быть выражен в BITMAPINFO, это самый быстрый способ. Если цветовые данные представлены в необычном формате (например, значения с плавающей запятой или имеют странное выравнивание), вам может потребоваться сделать промежуточную копию.

Ответ №2:

Визуализируйте в MemoryDC (что быстрее для попиксельного доступа), затем скопируйте его в свой window DC.