#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.