5edf7c19

DDSCAPS_MIPMAP | DDSCAPS_COMPLEX;


ddsd.dwWidth = 256UL;

ddsd.dwHeight = 256UL;

ddres = lpDD->CreateSurface(&ddsd, &lpDDMipMap);

if

(FAILED(ddres))

                ...

Вы можете опускать число уровней mipmaps, тогда IDirectDraw:: CreateSurface метод создаст цепочку поверхностей, каждый мощностью в два раза меньшей чем предыдущая, до самого маленького возможного размера. Также возможно опустить ширину и высоту, тогда IDirectDraw:: CreateSurface создаст число уровней с минимальным размером уровня 1ґ1.

Цепочка mipmap поверхностей может быть пересечена, используя IDirectDrawSurface:: GetAttachedSurface метод, определяя DDSCAPS_MIPMAP и DDSCAPS_TEXTURE флажки возможности. Следующий пример пересекает mipmap цепочку от самого высокого до самых низких разрешающих способностей.

LPDIRECTDRAWSURFACE lpDDLevel, lpDDNextLevel;

DDSCAPS ddsCaps;

lpDDLevel = lpDDMipMap;

lpDDLevel->AddRef();

ddsCaps.dwCaps = DDSCAPS_TEXTURE | DDSCAPS_MIPMAP;



ddres = DD_OK;

while

(ddres == DD_OK)

     {

// Обрабатывают этот уровень

             ...    

ddres = lpDDLevel->GetAttachedSurface(

&ddsCaps, &lpDDNextLevel);

lpDDLevel->Release();

lpDDLevel = lpDDNextLevel;

     }

if

((ddres != DD_OK) && (ddres != DDERR_NOTFOUND))

             ...

Вы можете также формировать переключающиеся цепочки mipmaps. В этом сценарии, каждый уровень mipmap имеет связанную цепочку обратных буферных поверхностей текстуры. Каждая обратная буферная текстура присоединена к одному уровню mipmap. Только передний буфер в цепочке имеет набор флажков DDSCAPS_MIPMAP; другие - просто текстура(DDSCAPS_TEXTURE). Уровень mipmap может иметь две присоединенных карты текстуры, одна с набором DDSCAPS_MIPMAP, которая является следующим уровнем в mipmap цепочке, и одна с набором флажков DDSCAPS_BACKBUFFER, которая является обратным буфером переключающейся цепочки. Все поверхности в каждой переключающейся цепочке должны иметь тот же самый размер.

Не возможно формировать такое поверхностное расположение с одиночным обращением к IDirectDraw:: CreateSurface. Чтобы создавать переключаемые mipmap, или формируйте комплекс mipmap цепочек, и вручную присоедините к обратному буферу методом IDirectDrawSurface:: AddAttachedSurface, или создайте последовательность переключающихсяe цепочек, и формируйте mipmap с IDirectDrawSurface:: AddAttachedSurface.



Содержание раздела