Введение в программирование игр на С++ для платформы DirectX 9 Меняем иконку приложения |
||
Данный небольшой урок является введением в программирование игр на C++ для DirectX 9 Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал), и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008. |
||
Выпуск 43 часть 1 Меняем иконку приложенияСерия уроков посвященных разработке игр в fle game engine.Урок 1 - Меняем иконку приложения со стандартной на вашу. |
||
[назад] [далее] [к содержанию] | ||
Создадим папку SkinnedMeshUpgrade и скопируем в нее содержимое папки SkinnedMesh | ||
Далее будем работать с новым проектом SkinnedMesh размещенным внутри папки SkinnedMeshUpgrade дополняя и расширяя его код. | ||
Для начала попробуем сменить иконку проекта на свою, например вот такую - | ||
![]() |
||
Внутри проекта SkinnedMeshUpgrade создайте папку Media, а внутри нее Icon. В папке Icon разместите файл someinex_girl.bmp | ||
Теперь вернитесь в MSVS и в окне Solution Explorer откройте узел проекта SkinnedMesh | ||
![]() |
||
Далее откройте узел Resource Files и дважды щелкните по ресурсу directx.ico Он откроется в рабочем окне и вы сможете увидеть каких видов иконки проекта можно создавать |
||
Для создания собственной иконки проекта на основе someinex_girl.bmp нужно правой кнопкой щелкнуть пункт Resource Files и выбрать Add > New Item | ||
В открывшемся окне выбрать Icon File (.ico) и дать ему любое имя, например someinex, нажать Add | ||
![]() |
||
Будет создан указанный ресурс | ||
Дважды щелкнув его Вы увидите, что по умолчанию для него создаются 2 стандартные иконки 16х16 4 бит и 32х32 4 бит | ||
Нужно создать новую щелкнув правой кнопкой мыши по области показанных типов иконок и выбрав New Image Type | ||
![]() |
||
В нашем случае подойдет 32х32 24 бит | ||
Перетаскиваем картинку someinex_girl.bmp из проводника в MSVS | ||
Выделяем, копируем и вставляем в ресурс someinex.ico с типом изображения 32х32 24 бит, другие типы можно удалить, при этом их изображения очистятся но в списке они останутся. Это нормально. | ||
Сохраняем результат | ||
И последний штрих - для того, чтобы иконка стала иконкой откомпилированного exe-файла нужно удалить старую - directx.ico и самое главное - отредактировать содержимое файла SkinnedMesh.rc Для этого нужно щелкнуть его правой кнопкой и выбрать ViewCode Найти строчку IDI_MAIN_ICON ICON "..\\..\\DXUT\\Optional\\directx.ico" и отредактировать ее на IDI_MAIN_ICON ICON "someinex.ico" Выполнить
сохранение и сборку проекта. Всё! Готово! |
||
Следует отметить, что наилучший вариант иконки это 48х48 24 бит | ||
в следующем уроке мы попробуем использовать в приложении другую анимированную модель | ||
[назад] [далее] [к содержанию] |
[к содержанию] [назад] [далее] | |||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||
![]() |
||
Как создать игру ? - Программируем сами. Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше. |
||
[содержание] [назад] [страница 1] [далее] | ||
Vertices - Вершины - страница 1 | ||
Итогом вставки новой созданной иконки должно стать для Вас сохранение изменений в проект (кнопка Save All на панели инструментов MSVS) и выполнением сборки проекта - по клавише [F7]. Еще раз напомню, что для сборки отладочной версии Debug нужно выбрать соответствующую конфигурацию проекта - в панели инструментов есть соответствующий выпадающий список. Release - конфигурация отличается отсутствием отладочной информации, поэтому отлаживать приложение в таком режиме сборки нельзя. Зато когда Вы отловите все ошибки в коде, тогда можно создать окончательный релиз. |
||
Если Вы уже вдоволь наигрались с проектом CreateDevice - сохраняем все внесенные изменения и закрываем проект File > Close Solution. Переходим к примерам Vertices, Matrices, Lights, Textures, Meshes |
||
Все настойки в этих проектах нужно делать абсолютно аналогично, как это описывалось на протяжении наших предыдущих уроков, а более конкретно в уроке - Самый первый шаг - страница 3 | ||
В примере Vertices рассматривается как работать с вершинами в 3d-пространстве. Теперь уже наше приложение будет выполнять более полезную работу - выведет на экран разноцветный треугольник. |
||
![]() |
||
По сравнению с предыдущим примером CreateDevice здесь уже рассматривается как создается и инициализируется вершинный буфер для модели треугольника. Треугольник хоть и плоский, но это уже модель, в примере Matrices показано как создать его вращение вокруг своей оси (по оси Y). | ||
Функция wWinMain включает использование новой функции - //
Create the vertex buffer //... } другое важное отличие - видоизменен цикл обработки сообщений, теперь он выглядит как //
Enter the message loop Т. е. если сообщения поступают в приложение, они обрабатываются, если нет - выполняется функция Render - другими словами отрисовка выполняется во время нахождения приложения в состоянии бездействия Idle - это и есть то состояние, когда нет системных сообщений, адресованных Вашему приложению. |
||
Функция InitVB HRESULT
InitVB() //заметьте, что цвет каждой вершины в формате AARRGGBB задается именно здесь! //о
формате задания цвета и определении конкретного цвета мы говорили в уроке
- CreateDevice страница 2
// Создаем вершинный буфер. Здесь мы выделяем достаточно
памяти для вершин
// Теперь мы заполняем вершинный буфер. Для этого
вызываем Lock() для VB
return S_OK; |
||
Функция Cleanup теперь включает освобождение объекта вершинного буфера. Функция Render включает новый код для рисования модели треугольника - //
начало сцены //
шагов. Мы передаем вершины в поток, поэтому первое - это определение
// Полнофункциональные, настраиваемые вершинные шейдеры - это //
выполняет фактическое рисование
// конец сцены |
||
Функция MsgProc не включает обработки сообщения WM_PAINT, потому что все d3d-приложения должны выполнять отрисовку находясь в состоянии Idle. | ||
Обратите внимание также на начало модуля Vertices.cpp //----------------------------------------------------------------------------- //
структура определяющая собственный тип вершин // наш настраиваемый тип вершин FVF, который определяет какой тип вершин
// используется для их описания |
||
Чтобы проверить насколько Вам ясно как работать с вершинами - попробуйте вывести вместо треугольника - квадрат. Цвета вершин также измените. | ||
![]() |
||
Сначала посмотрите на приведенный рисунок и определите как были описаны координаты для треугольника: 150.0f, 50.0f - это вершина, отмеченная на рисунке цифрой 1, 250.0f, 250.0f - вершина номер 2 и 50.0f, 250.0f - вершина номер 3. Заметьте, что вершины определены в порядке обхода по-часовой стрелке. Это правило для определения видимых граней модели. Если вершины оказываются повернуты к экрану той гранью, где они следуют против часовой стрелки, то такая грань считается невидимой для зрителя стороной и не отрисовывается ! |
||
Теперь можно легко определить вершины для нашего квадрата - CUSTOMVERTEX
vertices[] = { 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, }, { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, {
50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, |
||
Однако даже правильно изменив количество вершин с 3 на 4 и правильно указав это число в строке кода if(
FAILED( g_pd3dDevice->CreateVertexBuffer( 4 * sizeof( CUSTOMVERTEX
), И указав количество отрисовываемых примитивов в функции Render в строке - g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 2 ); в количестве 2 вместо 1 |
||
Результатом будет - | ||
![]() |
||
А всё дело в том, что D3D-приспособлен понимать только треугольные грани - состоящие из треугольников. Это сделано из-за того, что три вершины образующие треугольную грань всегда находятся в одной плоскости и следовательно так проще обсчитывать прорисовку сложных моделей. | ||
Значит нам, для создания модели квадрата, состоящего из 2х треугольных граней нужно использовать не 4, а 6 вершин - | ||
CUSTOMVERTEX
vertices[] = { 250.0f, 50.0f, 0.5f, 1.0f, 0xff00ff00, }, { 250.0f, 250.0f, 0.5f, 1.0f, 0xff0000ff, }, { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, { 50.0f, 250.0f, 0.5f, 1.0f, 0xffffff00, }, { 50.0f, 50.0f, 0.5f, 1.0f, 0xff0000ff, },
|
||
![]() |
||
Важен и порядок, в котором определена вторая тройка вершин. Если они будут определены в другом порядке, то вторая грань (второй треугольник) выведен не будет. Попробуйте изменить порядок второй тройки вершин и убедитесь в этом сами. | ||
На рисунке также отчетливо видно какая из вершин в какой цвет окрашена, так что будет более понятно где и какая вершина. На первых порах задайте для каждой из вершин свой цвет - тогда легче будет увидеть где нужная вершина. | ||
[содержание] [назад] [страница 3] [далее] | ||
Стоимость: 12000 руб.
Данная система управления сайтом megainformatic cms social имеет все необходимые компоненты для создания вашей собственной социальной сети или системы личных кабинетов.
megainformatic cms social может использоваться как самостоятельный сайт, так и встраиваться в другие cms (joomla, drupal, wordpress и другие).
Демонстрационные сайты системы -