урок / tutorial Direct3D 10 Урок 1 - Tutorial 1
опубликовано 25.09.2016 9:30 автор: admin
показать другие скриншоты
Direct3D 10 Урок 1
В данном уроке (пример компилируется под MSVS 2008 или выше) объясняется, что нужно
для использования Direct3D 10 в вашем приложении. Мы создадим простейшее окно,
заполненное каким-либо цветом.
На какой системе будет работать Direct3D 10 ?
Выдержка из dx help - system requirements
Minimum Configuration
The following minimum development system configuration is required for use with the DirectX SDK.
1 GHz CPU
512 MB RAM
1 GB of available hard-drive space
Windows XP Service Pack 3
Visual Studio 2008 Service Pack 1
A video card compatible with DirectX 9.0, with 2.0 pixel shader and vertex shader support
Recommended Configuration
The following recommended development system configuration can fully utilize the capabilities of the DirectX SDK and will provide the best experience.
Dual 2GHz CPU
2+ GB RAM
1 GB of available hard-disk space
Windows 7 x64 or Windows Vista Service Pack 2 x64
Visual Studio 2010
A video card compatible with DirectX 11.0
An audio card with speakers for audio development and testing
Значит
минимальные системные требования для игры написанной для directx 10 будут такими:
Процессор: 1 GHz
Оперативная память: 512 MB
Место на жестком диске: Будет зависеть от размаха вашей игры от нескольких Mb до 1 Gb и больше
Операционная система: Windows XP Service Pack 3
Доп. библиотеки, установленные в системе: Visual Studio 2008 Service Pack 1
Видеокарта: Совместимая с DirectX 9.0, поддерживающая 2.0 версию пиксельного шейдера и с поддержкой вертексного шейдера
Поддержка звуковой карты.
Исходный код примера вы найдете в папках -
Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial00\
Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial01\
Скачав и установив DirectX SDK June 2010.
Здесь я только приведу кусочек кода, меняя который можно заполнить окно произвольным цветом:
Откройте проект Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial01\Tutorial01_2008.sln
из MSVS 2008 и файл -
Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial01\Tutorial01.cpp
Найдите там такие строки кода -
void Render()
{
// Just clear the backbuffer
float ClearColor[4] = { 0.0f, 0.125f, 0.3f, 1.0f }; //red,green,blue,alpha
Измените на -
float ClearColor[4] = { 1.0f, 1.0f, 0.0f, 1.0f };//{ 0.0f, 0.125f, 0.3f, 1.0f }; //red,green,blue,alpha
Сохраните изменения и скомпилируйте проект.
Запустите полученный exe файл -
Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial01\Debug\Tutorial01.exe
или
Microsoft DirectX SDK (June 2010)\Samples\C++\Direct3D10\Tutorials\Tutorial01\Release\Tutorial01.exe
Вы получите простейшее приложение, которое создаст окно и заполнит его желтым цветом, как на приведенном выше скриншоте.
Что такое Release и Debug сборки ?
Debug версия создается компилятором для целей запуска в отладочном режиме. Размер exe получается значительно
больше, код не оптимизируется, но можно выполнять программу пошагово, расставляя break points и отслеживая
значения нужных переменных.
Release сборку уже нельзя запустить в режиме отладки. Это окончательный вариант рабочего приложения без
отладочной информации. Код exe получается меньше, он оптимизирован.
О тестировании и отладке приложения на примере разработки игры в среде Delphi рассказывается в статье -
Урок 9 Тестирование и отладка приложения
Как задается цвет ?
Цвет задается в виде 4 элементов массива и представляет компоненты Red, Green, Blue, Alpha значения
которых задаются в виде чисел с плавающей точкой одинарной точности - float и меняются от 0.0f до 1.0f.
Поскольку каждый цветовой компонент это байтовое значение от 0 до 255, то значения вне этого диапазона
просто ничего не изменят.
Ну а в приведенном примере для желтого цвета я просто задал цвет как 0xffffff00 (значение в двоичном виде в hex системе счисления, компоненты идут в порядке alpa, red, green blue по байту на каждое, т. е. 0x - показывает что число шестнадцатиричное, ff - это значение для альфа, ff - для red, ff - для green, 00 - для blue), т. е. 255 для alpha,
255 для красного и 255 для зеленого, а для синего - 0.
Поупражняемся:
0xffff0000
или
float ClearColor[4] = { 1.0f, 0.0f, 0.0f, 1.0f };
красный
0xff3bfe06
или
59, 254, 6 или 59/255 = 0.2313f; 254 / 255 = 0.9960f; 6 / 255 = 0.0235f
или
float ClearColor[4] = { 0.2196f, 0.9960f, 0.0235f, 1.0f };
кислотно-зеленый
0xff3eade1
или
62 / 255 = 0.2431f; 173 / 255 = 0.6784f; 225 / 255 = 0.8823f;
float ClearColor[4] = { 0.2431f, 0.6784f, 0.8823f, 1.0f };
сине-голубой
0xffffc000
или
255, 192, 0
float ClearColor[4] = { 1.0f, 0.7529f, 0.0f, 1.0f };
float ClearColor[4] = { 1.0f, 0.752f, 0.0f, 1.0f }; //обратите внимание ! точность для чисел достаточна всего в 3 знака после запятой (десятичной точки). Если задавать менее трех знаков - значение цветового компонента немного искажается. Если же задавать более 3х знаков - значение будет точным, но избыточным - т. к. знаки больше 3-его просто игнорируются поскольку значение всегда не превышает размер 1 байта - т. е. от 0 до 255 (0.0f ... 1.0f для float)
оранжевый
Альфа (alpha) - это полупрозрачность - попробуйте задать её значение равным 0.0f и какой бы цвет вы ни задали всегда будете неизменно получать черный.
Если же задавать значения выше 0.0f, но меньше 1.0f - будут полупрозрачные оттенки. ВАЖНОЕ ЗАМЕЧАНИЕ !!! Поскольку в данном примере мы заполняем цветом back buffer - т. е. самый задний план - то компонент альфа там всегда равен 1.0f независимо от заданного значения. Т. к. back buffer это самый крайний задний план - стенка декорации, за которой ничего нет, поэтому сделать её полупрозрачной нельзя. Полупрозрачными могут быть только текстуры выводимые поверх back buffer. О том, как их выводить Вы узнаете из последующих уроков.
на главную