ПРОГРАМИРУЕМ 3D ГРАФИКУ ИСПОЛЬЗУЯ DirectX



Клипы - часть 5


дется маскировать и сдвигать цветовые компоненты пикселей, чтобы обеспечить их соответствие формату DIB-секции.

Полагаю, я достаточно подготовил вас. Ниже приведена функция, которая получает изображение из буфера:

// Получить текущее изображение из буфера.

// Если функция возвращает информационный заголовок

// или графические данные, вызывающая функция должна

// освобождать соответствующую память вызовами delete pBMI

// и ::DeleteObject(hBmp). Не пытайтесь применять delete

// к графическим данным, поскольку они принадлежат

// объекту-растру.

HBITMAP CDirectDraw::GrabImage(BITMAPINFO** ppBMI,

void** ppBits) {

// Задать исходные значения, возвращаемые функцией

if (ppBMI) *ppBMI= NULL;

if (ppBits) *ppBits = NULL;

if (!m_pBackBuffer) return NULL;

// Заблокировать вторичный буфер, чтобы получить

// его описание.

// ВНИМАНИЕ: вы не сможете осуществить пошаговое

// выполнение

// этого фрагмента в отладчике — поверхность GDI

// блокируется.

LPDIRECTDRAWSURFACE iS = m_pBackBuffer-»GetInterface () ;

ASSERT;iS) ;

DDSURFACEDESC ds;

ds.dwSize = sizeof(ds);

m_hr = i3-»Lock(NULL,

&ds,

DDLOCK_WAIT,

NULL) ;

if (m_hr != DD_OK) {

TRACE("Failed to lock surface\n");

return NULL; // Failed to lock surface }

// Разблокировать поверхность, чтобы можно было // воспользоваться отладчиком //и при необходимости выйти из приложения m_hr = m_pBackBuffer-»GetInterface()-»Unlock(ds.lpSurface) ;

// Убедиться, что поверхность относится к одному

// из типов,

// с которыми мы можем работать.

// Примечание: программа обрабатывает только

/b> ЯИЦ1 Глава 11. Клипы

// поверхности с 8-,

// 16- и 24-битной кодировкой пикселей.

if (!(ds.ddpfPixelFormat.dwFlags & DDPF_PALETTEINDEXED8) && '(ds.ddpfPixelFormat.dwFlags & DDPF_RGB)) { return NULL; // Формат не поддерживается программой

} int iBitCount;

if (ds.ddpfPixelFormat.dwFiags & DDPF_PALETTEINDEXED8) {

iBitCount = 8;

} else if (ds.ddpfPixelFormat.dwFlags & DDPF_RGB) {

// Проверить поверхность на допустимость типа




Содержание  Назад  Вперед