Способ выполнения этого назначения очень зависит от формата пикселя, который вы указали при получении ddsd
.См. Поле ddpfPixelFormat
, а также, в частности, там: dwRGBBitCount
.
Возможно, вы сможете предоставить эту информацию о формате пикселей, чтобы я мог улучшить свой ответ.Тем не менее, я могу легко дать вам пример того, как вы выполняете это назначение цвета пикселя, если, например, формат пикселя:
[1 byte red] [1 byte green] [1 byte blue] [1 byte unused]
Вот пример:
*(pDisplayMemOffset+0) = 0x10;// asigning 0x10 to the red-value of first pixel
*(pDisplayMemOffset+1) = 123; // asigning 123 to green-value of first pixel
// (no need for hex)
*(pDisplayMemOffset+4) = 200; // asigning 200 to red-value of second pixel
// (BYTE is unsigned)
Если выИзвлечение значений цвета из целого числа во многом зависит от того, в каком порядке следования байтов и цветов задано это целое число, но вы можете легко его опробовать.
Сначала я попробую это:
*(((unsigned int*)pDisplayMemOffset)+0) = 0x1A2A3A4A
*(((unsigned int*)pDisplayMemOffset)+1) = 0x1B2B3B4B
Если это сработает, то в формате пикселей будет либо неиспользованный 4-й байт (как в моем примере выше), либо альфа-значение, которое сейчасустановить одно из значений.Опять же: помимо пиксельного формата, порядок байтов в вашем целом числе решает, работает ли это напрямую, или вам нужно выполнить некоторую замену байтов.