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


Цвет и текстуры - часть 25


// Загрузить текстуру ASSERT(ppITex) ;

C3dTexture* pTex = new C3dTexture;

if ( !pTex-»LoadResource ( (const char* ) pszName) ) (

delete pTex;

return E_FAIL;

} *ppITex = pTex-»Get!nterface () ;

// Включить текстуру в список изображений фигуры pThis-»m_ImgList .Append (pTex) ;

return NOERROR;

}

Обратите внимание на то, как при загрузке текстуры из ресурса используется имя текстуры (имя файла, pszName). Для этого приходится включать текстуры в ресурсы приложения таким образом, что мы могли пользоваться именем файла в качестве идентификатора ресурса.

Поскольку AppStudio не позволяет использовать обычное имя файла (например, Camo.bmp) как идентификатор ресурса, мы не сможем включить текстуру в ресурсы приложения с помощью AppStudio. Вместо этого придется вручную отредактировать файл RC2 по аналогии с тем, как мы добавляли к ресурсам файл объекта .X:

/b> iHl' Глава 8. Цвет и текстуоы

// Корпус танка

IDX_TANK XOF res\t_hull.x

camo.bmp BITMAP res\camo.bmp

camousa.bmp BITMAP res\camousa.bmp

Сами файлы находятся в подкаталоге RES каталога проекта. Разумеется, если вы собираетесь использовать имена в качестве идентификаторов ресурсов, придется позаботиться о том, чтобы имена всех файлов с текстурами были различными.

И последнее замечание: растры всегда занимают много места, и включение многочисленных растров в ресурсы заметно увеличивает размер приложения. Если вас это не устраивает, можно объединить все файлы макета в одном файле и загружать его в тот момент, когда вам понадобится воспроизвести данный макет.

Довольно о цветах

Нам довелось увидеть немало разнообразных примеров того, как цвета и текстуры комбинируются с трехмерными фигурами. Однако на этом дело не кончается — мы не рассмотрели еще один случай, связанный с текстурами, прозрачностью... и только двумя измерениями! Речь о нем пойдет в следующей главе.




Начало  Назад  Вперед



Книжный магазин