ria pc game
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
22 февраля 2019 15:28
Вход Регистрация Забыли пароль ?

megainformatic - Веселый Буквоежка - онлайн комикс - страница 22
Веселый Буквоежка - онлайн комикс - страница 22 представляем Веселый Буквоежка - онлайн комикс. Бабуля, а ты ничего не забыла ?!
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Программируем на C++ с использованием MFC - Создание MFC приложения - hello, world !

megainformatic - Как создать игру ? - Пишем игровой движок с нуля

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Вступление

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - Общая структура будущего игрового движка

Разное

megainformatic - Как создать игру ? - Пишем игровой движок с нуля - DXUTMainLoop - цикл работы DirectX-приложения

megainformatic - Варианты макетов Психолог 911

megainformatic - Шаблоны для сайтов - что это и какие они бывают ?

megainformatic - Ива Ден энд КуХа - КОДЕКС ФРИЛАНСЕРА - Глава 3 - Кто он ? (who is ?)

megainformatic - Мои Музыкальные Миры - готовая музыка mp3 - новинки 2013 года

megainformatic - Теория и практика хакерских атак - самозащита от нападения

megainformatic - Теория и практика хакерских атак - самозащита от нападения - Способы подмены реального IP

megainformatic - Fruity Loops Studio 9 - Как синтезировать свои сэмплы - изучаем возможности плагина Sytrus

megainformatic - Видоизменяем тему для Wordpress под свои нужды

megainformatic - Flash приложения и игры - Шаг 3 - управляемый шарик

megainformatic - Учимся создавать флеш-игры, что нужно знать для того, чтобы заняться созданием flash приложений и игр ?

megainformatic - Шаг 4 в освоении Flash-технологий - как анимировать персонажа и управлять им

megainformatic - Форма для смены шаблонов сайта. Модуль template selector

megainformatic - megainformatic cms express files + module slider

megainformatic - Создание сайта бесплатно или под заказ

megainformatic - Как создать flash баннер

megainformatic - Разработка flash-приложения для сайта: онлайн примерочная

megainformatic - Мои впечатления о книге - Владислав Крапивин - Журавленок и Молнии

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль отзывов/комментариев для вашего сайта

megainformatic - Модуль короткие ссылки short link

megainformatic - Работа с сокетами fsocket из php

megainformatic - Как создать игру Создание игровых панелей и индикаторов

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

megainformatic - Приключения Кости Коробкина - Как я провел лето - интерактивный комикс

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс

megainformatic - Система управления сайтом на php - megainformatic cms admin files

megainformatic - обзор антивирусных средств защиты

megainformatic - как работает антивирус ?

megainformatic - Создание сайта для бизнеса

megainformatic - Новый взгляд на очевидные вещи

megainformatic - Разработка программ на c++

megainformatic - Немного о музыке

megainformatic - GET и POST запросы

megainformatic - для чего нужна карта сайта

megainformatic - Web Администрирование

megainformatic - Мысли о разном

megainformatic - Легко ли быть программистом

megainformatic - Глубины программирования на C++

megainformatic - Убираем лимит на размер импортируемого файла в PhpMyAdmin

megainformatic - Как создать torrent файл

megainformatic - Нужна ли валидация вашему сайту ?

megainformatic - Антивирус DrWeb

megainformatic - Калькулятор рассчёта стоимости зубопротезирования для стоматологической клиники

megainformatic - Что такое BitTorrent (БитТоррент)

megainformatic - Миссис Даутфайр 1993 фильм torrent

megainformatic - Как скачивать торрент-раздачу ?

megainformatic - Автотелега фильтр

megainformatic - Фильмы

megainformatic - Fahrengeit Фаренгейт игра 2006 для PC

подробнее

     
  Создание макета помещения - этап 2  
     
     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
     
  каркасный вид макета помещениясплошной вид макета помещения  
     
  Щелкнув по изображению можно скачать модель в формате 3ds max 7.0 (в виде архива Win-Rar 3.3)  
     
 

Способы обзора моделей (изменение точки зрения наблюдателя):

- Вращение наблюдателя ;

- Перемещение наблюдателя по экрану (Pan) . 

Отмена действия с изменением точки наблюдения – [Shift] + [z].

Эти инструменты - также в правой нижней части окна. Чтобы их использовать нужно выбрать инструмент и применить его в окне вида (по аналогии с тем, как Вы применяли Zoom).

Панорама (Pan) - простое перемещение наблюдателя (как бы сдвиг рукой). Вращение имеет некоторые нюансы - когда вы выберете вращение наблюдателя в окне вида появится управляющий элемент - в виде желтой окружности. Если Вы будете наводить курсор мыши на разные элементы вид курсора будет изменяться, показывая в какой плоскости можно совершать вращение. Само вращение осуществляется перемещением мыши с нажатой левой кнопкой (аналогично действию других инструментов).

В ходе экспериментов с изменением наблюдения объекта Вы можете зайти в тупик задав очень неудобное положение. Отменить изменения можно нажав комбинацию клавиш [Shift] + [z] столько раз, сколько это необходимо.

Замечание: инструменты обозревания изменяют только положение наблюдателя! Положение объекта в пространстве (его пространственные или мировые координаты) при это остается неизменным! Помните это! Для изменения положения объекта в пространстве применяются другие инструменты. Например, Select And Move, которым Вы уже пользовались. Но обо всём этом далее.

Выше уже говорилось о том, что объекты изнутри "пусты" - т.е. невидимы. Чтобы убедиться в этом - попробуйте увеличивать лупой вид на объект так, чтобы оказаться внутри. Вы увидите, что изображение исчезает. Однако нам нужна видимая изнутри комната.

Добиться видимости изнутри можно несколькими способами. Один из них, часто применяемый при создании замкнутого объема закрытых или открытых пространств - это "выворачивание" видимых граней "наизнанку". Т.е. нормали граней отражаются и объект становится видимым изнутри, но невидимым снаружи. Это находит применение в компьютерных играх - когда создается так называемый "небесный куб" или помещение представляющее замкнутое пространство. Игрок никогда не выйдет за пределы этого пространства, что и дает возможность сделать внешние грани невидимыми, т.к. их никогда не потребуется отображать. Пример небесного куба представлен в разделе разработки компьютерных игр (урок 11).

Однако при этом способе толщина стен самая минимальная и ограничена толщиной простой плоскости, т.е. где-то 1 пиксель. В нашем примере, чтобы получить стены большей толщины, а именно - в 0,5м, мы изберем другой способ.

Создайте в любом месте еще один box.

 
     
  Select By Name - выбор объекта по имениИспользуя кнопку Select By Name выберите второй бокс и переименуйте в room_box  
     
  Align - выравнивание объектов в пространстве и друг относительно другаВыделите меньший бокс и, нажав кнопку Align щелкните мышью по второму (большему) боксу. Нам нужно выровнять боксы так, чтобы  
     
  окно параметров выравнивания  
     
 

меньший располагался точно внутри большего. Для этого, в появившемся окне задайте параметры как показано на рисунке.

При этом текущий объект будет выровнен по отношению к указанному объекту по координатам X и Z относительно центра.

Возникает вопрос: а нужно ли выравнивать объекты относительно координаты Y ? Возможно, да.

Как это проверить? В окне Perspective viewport включите режим отображения Wireframe – клавиша F2. Покрутите фигуры и посмотрите требуется ли выравнивание по Y. Если да, то произведите выравнивание.

Теперь мы получили две фигуры – одна внутри другой.

 
     
 

Режим Wireframe - отображение каркаса модели - т.е. отображение только ребер без отображения граней.

Используя панель модификаций измените размеры большего бокса так, чтобы смещение между боксами составило 0,5m.

Количество сегментов будет таким же, если нет – задайте как у первого Box’а.

 
     
  малый бокс внутри большого (каркасный вид).  
     
 

Вы заметили, что на этом рисунке окно перспективы занимает всю площадь. Как это сделать? На панели изменения обзора - в правом нижнем углу окна программы найдите кнопку Maximize Viewport Toggle кнопка максимизации/минимизации текущего окна вида. Повторное ее нажатие приводит к восстановлению привычного Вам вида - всех 4-х окон проекций.

Произведем удаление пространства занимаемого малым боксом внутри большего:

- Выделите больший бокс, чтобы убедиться в том, что это действительно он – посмотрите его размеры на Modify panel;

- на панели Create в выпадающем списке выберите Compound Objects и нажмите кнопку Boolean;

 
     
  выбор объектов наполнения  
     
  объект наполнения - Boolean - логические операции  
     
 

Работая в 3DS MAX Вы обнаружите новый вид панелей - прокручиваемые панели. Т.к. Вам необходимо добраться до указанных ниже параметров, то произведите прокрутку панели - в момент когда курсор над панелью приобретает вид руки можно нажать левую кнопку мыши и прокрутить панель.

- в раскрывшейся панели Parameters задайте:

Pick Boolean

-         Move

Operation

-         Subtraction (A-B)

 
     
  заданные параметры для операции логического вычитания  
     
 

и щелкните по кнопке Pick Operand B.

Поскольку внутренний бокс сейчас не виден укажите его следующим образом: нажмите на Main Toolbar кнопку Select By Name и в окне укажите имя объекта, а затем кнопку Pick.

Если вы сделали все верно, то в других 3-х окнах вида (фронтальном, левом и верхнем) увидите изменения.

Попробуйте также включить обычный (не каркасный) вид и исследовать модель изнутри - путем увеличения вида Zoom. Вы заметите, что модель теперь не пуста изнутри!

 

Теперь можете сохранить проделанную работу в файл my_room1.max и можно двигаться дальше!

 
     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
     

 

подробнее

     
  Уроки Photoshop  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше.

 
     
  [содержание] [назад] [страница 2] [далее]  
     
  Изучаем и модифицируем пример CreateDevice - страница 2  
     
 

Наилучшее понимание и усвоение достигается в том случае, когда созданная Вами или другим человеком программа выполняет то, что Вы хотели, и Вы знаете как изменить ход выполнения, таким образом, чтобы получить результат в пределах возможных вариантов.

Программа CreateDevice достаточно проста. Основая цель: создание окна приложения и подключение к функциям DirectX.

Вариантов тут немного: изменить внешний вид приложения или изменить способ подключения к функциям DirectX.

 
     
 

Во внешнем виде приложения CreateDevice можно изменить следующее:

- размеры и заголовок окна, набор кнопок в окне заголовка;

- создать иконку приложения;

- изменить цвет рабочей области;

Способов подключения к функциям DirectX на самом деле всего 2, да больше просто и не нужно.

Первый способ Вы уже рассмотрели - он как раз и приведен в примере CreateDevice. Второй способ мы пока рассматривать не будем, но он будет рассмотрен нами в дальнейших уроках. Скажу лишь, что выглядит он возможно несколько более сложным, особенно для новичков, но зато он более удобен и быстр для использования - за счет включения функций из модуля DXUT.

 
     
 

Решим поставленную задачу.

Размеры и текст заголовка окна представляют из себя параметры функции CreateWindow, которая находится в коде функции wWinMain

 
     
  // Create the application's window
HWND hWnd = CreateWindow( L"D3D Tutorial", L"D3D Tutorial 01: CreateDevice",
WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
NULL, NULL, wc.hInstance, NULL );
 
     
  Другими словами окно имеет имя: D3D Tutorial, текст в заголовке окна "D3D Tutorial 01: CreateDevice", координаты x, y и размеры width, height окна  
     
 

Попробуйте задать другие параметры, сохранить изменения, выполнить компиляцию - клавиша [F7] и запустить созданное приложение.

Как видите всё очень просто.

 
     
 

Набор кнопок в заголовке окна -

Набор кнопок в заголовке окна

 
     
  Эти кнопки находятся в правой части окна - слева-направо - кнопка сворачивания, кнопка максимизации во весь экран, кнопка закрытия.  
     
 

Большинство игровых приложений требует для своей работы размеров окна, соответствующих одному из стандартных разрешений экрана, например 800х600,

изменение размера, кроме изменения разрешения экрана, не допустимо, поэтому если Ваша игра будет работать в оконном режиме, а это обязательно требуется на стадии отладки, требуется запретить кнопку максимизации, а также запретить изменение размеров окна.

 
     
 

Эта цель достигается следующей строкой кода, которую нужно записать сразу после строки вызова функции CreateWindow -

// я закомментировал строку со старыми параметрами размеров окна

//и задал новые
HWND hWnd = CreateWindow( L"D3D Tutorial", L"D3D Tutorial 01: CreateDevice",
//WS_OVERLAPPEDWINDOW, 100, 100, 300, 300,
WS_OVERLAPPEDWINDOW, 0, 0, 800, 600,
NULL, NULL, wc.hInstance, NULL );

// сделал окно неизменяемых размеров, содержащее системное меню, кнопку закрытия и //минимизации

SetWindowLong( hWnd, GWL_STYLE,
WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX);

 
     
 

Изменить цвет рабочей области также не составляет труда -

Находим функцию Render и изменяем строку кода

// Clear the backbuffer to a blue color
g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB( 0, 0, 255 ), 1.0f, 0 );

на следующую

g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, 0xFF00FF00, 1.0f, 0 );

 
     
 

В этом случае окно будет заполняться зеленым цветом. Вообще код цвета определяется так

0xAARRGGBB,

где АА - значение от 0 до FF соответствующее цвету альфа-канала - непрозрачности - 0 - соответствует полной прозрачности, FF (255) - полной непрозрачности.

RR, GG, BB - соответственно определяют цветовые каналы Blue, Green и Red - т. е. интенсивность от 0 до FF синего, зеленого и красного составляющих цвета.

Задать любой нужный Вам цвет можно следующим образом -

Запустить Photoshop, вызвать диалог выбора цвета, щелкнув в панели инструментов цвет переднего либо заднего плана, выбрать желаемый цвет и посмотреть полученный код цвета -

 
     
  выбор цвета  
     
 

К значению #c7c048 Вам нужно добавить лишь желаемую полупрозрачность цвета, подставив значение от 00 до FF

в результате получим цвет 0xFFC7C048

 
     
  в результате получим цвет 0xFFC7C048  
     
  Нам осталось научиться создавать иконку для приложения, и включить её в приложение CreateDevice  
     
  Для создания иконки Вам потребуется Photoshop.  
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  [содержание] [назад] [страница 2] [далее]  
     
подробнее

     
 

Видео урок посвященный созданию игры Ну, Погоди ! - рождение игры часть 3.

Покажет Вам простейшую элементарную игру и особенности её создания в delphi 7 на directx 8.1 api.

 
     
 
Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 

Оконный и полноэкранный режимы работы имеются во всех современных играх написанных и в OpenGL и в DirectX.

Полное быстродействие достигается в полноэкранном режиме, хотя на современных машинах работа не слишком требовательных к быстродействию игр даже в оконном режиме не приводит к ощутимым задержкам в работе.

Оконный режим подходит для небольших, казуальных игр, использующих немного ресурсов и не требующих максимального быстродействия. Однако имейте в виду, что оконный режим - это режим главным образом предназначенный для отладочных целей. Максимально достижимое быстродействие достигается ТОЛЬКО в полноэкранном режиме. Но этот режим не подходит для отладочных целей, т.к. в нём невозможно поймать и отследить все ошибки, кроме того, при некоторых особо фатальных ошибках возврат из этого режима вообще может оказаться невозможным без перезагрузки компьютера.

 
Именно поэтому, пока Вы еще чувствуете, что Ваша игра "сыровата", тестируйте и отлаживайте ее в оконном режиме. Он позволит Вам в особо фатальных случаях просто снимать приложение через диспетчер задач, что в случае полноэкранного режима не всегда может оказаться возможным.
 
 
 

Если Вам ясен весь материал, изложенный в 2х предыдущих уроках, то в общих чертах работа D3D-приложения в оконном режиме Вам тоже должна быть понятна.

Размер рабочей области окна D3D в оконном режиме определяется размерами того окна, чей обработчик (Handle) задан при передаче параметров во время создания объекта IDirect3DDevice8

В этом легко убедиться заглянув в код методов TD3DGameApp.Create_ и TD3DGameApp.CreateDisplayObjects

 
Поэтому далее мы рассмотрим лишь код и особенности, которые необходимо учитывать при включении полноэкранного режима D3D-приложения и при переключениях между полноэкранным/оконным режимами.
 
Если взять в качестве основы проект, который мы создали в предыдущем уроке, то вот код, который необходимо добавить в модуль главной формы (MainForm) этого проекта для переключения приложения в полноэкранный режим.
 

Прежде всего нужно предусмотреть пункт меню или клавиши, которые будут использоваться Вашим D3D-приложением для переключений между оконным/полноэкранными режимами.

В случае оконного режима это может быть обычный пункт меню TMainMenu. В полноэкранном режиме ситуация несколько сложнее - в этом режиме главное меню окна не отображается, именно поэтому для выхода из полноэкранного режима нужно использовать какую-либо клавишу (комбинацию клавиш), причем обрабатываемую средствами DirectInput, можно также использовать игровое меню, реализуемое средствами Direct3D без использования TMainMenu.

О том, как создать и использовать такое меню описано в статье - Создание игрового меню

 
Необходимо кратко познакомиться со средствами управления игрой через интерфейс DirectInput, т.к. это понадобится Вам в дальнейшем и сейчас - для обработки переключений между полноэкранным/оконными режимами.
 

Не вдаваясь в подробности документации по DirectX, которую Вы, надеюсь, найдете и изучите самостоятельно по мере необходимости, DirectInput8 - это более скоростное и эффективное средство опроса устройств ввода - клавиатуры, мыши и других подключаемых устройств (всемозможных джойстиков, рулей и прочего).

Использование DirectInput8 для того, чтобы пользователь мог быстро управлять игрой, а игра быстро реагировать на команды пользователя сводится к следующему -

в пункт uses секции interface нужно подключить модуль DX8_DIUtil8.pas из библиотеки Delphi DirectX 8.1

в этой же секции описать константы, которые будут определять наборы клавиш клавиатуры и мыши задающие те или иные действия игрока в игровом приложении, например

const

ChangeWindowModeKey = isButton1; //константа isButton1 определена в модуле DX8_DIUtil8.pas

в описании класса D3D-приложения (класс TD3DGameApp в нашем случае) добавить поле

m_DXInput: TDXInput; //управление игрой через DirectInput

Также в описании класса нужно добавить несколько новых методов -

// Input functions
procedure SetDefaultDefKeys;
procedure CreateInputObjects;
procedure DestroyInputObjects;
procedure UpdateInput;

 

Далее в секции implementation нужно реализовать код данных методов -

procedure TD3DGameApp.SetDefaultDefKeys;
begin
FCustomKeyAssign := DefineDefaultKeys;
//процедуру DefineDefaultKeys нужно определить как локальную для модуля //главной формы Вашего проекта
end;

в секции интерфейса она записывается как

function DefineDefaultKeys: TKeyAssignList;

а в секции реализации как

function DefineDefaultKeys: TKeyAssignList;
begin
FillChar(Result, SizeOf(Result), 0);

AssignKey(Result, ChangeWindowModeKey, [Ord('W'), VK_F6]); //к данному действию привязываются клавиши W и F6

end;

далее реализуем код оставшихся методов

procedure TD3DGameApp.CreateInputObjects;
begin
SetDefaultDefKeys;
m_DXInput := TDXInput.Create(Self);
end;

procedure TD3DGameApp.DestroyInputObjects;
begin
FreeAndNil(m_DXInput);
end;

procedure TD3DGameApp.UpdateInput;
var
CurrentState: TUserInput;
begin
if not Assigned(m_DXInput) then Exit;

m_DXInput.Update;

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

end;

вызов метода CreateInputObjects нужно добавить внутри TD3DGameApp.OneTimeSceneInit

вызов метода DestroyInputObjects нужно добавить внутри TD3DGameApp.FinalCleanup или другом методе освобождения ресурсов, который вызывается из FormDestroy

вызов метода UpdateInput, в котором осуществляется обновление состояния устройств DirectInput и вызов методов обработки тех или иных действий пользователя нужно добавить внутри метода TD3DGameApp.FrameMove

 
Итак, переключение полноэкранного/оконного режимов D3D-приложения будет происходит по действию ChangeWindowModeKey. Данное действие будет вызываться клавишами [W] или [F6]. Можете использовать другие клавиши, если хотите.
 

Остается в строке кода

if ChangeWindowModeKey in m_DXInput.States then {выполнить нужное действие};

комментарий {выполнить нужное действие}

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

Таким методом является следующий -

procedure TOptionsMenu.AcceptOptions;
var
ScreenSizeMetric: TScreenSizeMetric;
begin
if g_d3dApp = nil then Exit;
ScreenSizeMetric := GetScreenSize;
if (not g_d3dApp.m_bFullScreen = Windowed) and
(g_d3dApp.m_dwScreenWidth = ScreenSizeMetric.Width) then Exit;

g_d3dApp.SwitchDisplayModes(not Windowed, ScreenSizeMetric.Width,
ScreenSizeMetric.Height);
end;

В данном случае такой метод реализован как метод объекта меню TOptionsMenu и вызывается при подтверждении смены заданных настроек приложения. В данном случае настройки достаточно просты. Проверяется заданное в настройках разрешение экрана и если произошла смена режима оконный/полноэкранный или изменилось заданное разрешение будет вызван метод SwitchDisplayModes объекта g_d3dApp, который является экземпляром класса TD3DGameApp.

В простейшем случае можно рассмотреть реализацию переключений между оконным режимом приложения и полноэкранным режимом с разрешением например 800x600 пикселей и максимальной частотой покадровой развертки поддерживаемой монитором (100 Hz или выше).

Предварительно добавьте данный метод в описание класса TD3DGameApp

function SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;

Затем реализуйте его в коде следующим образом -

function TD3DGameApp.SwitchDisplayModes(bFullScreen: Boolean;
dwWidth, dwHeight: Cardinal): HRESULT;
var
hr: HResult;
begin
if not m_bIsActive or not m_bDisplayReady then begin
result := S_OK;
Exit;
end;

// Check to see if a change was actually requested
if bFullScreen then
begin
if ((m_dwScreenWidth = dwWidth) and (m_dwScreenHeight = dwHeight)) and
(m_bFullScreen = bFullScreen ) then
begin
result := S_OK;
Exit;
end;
end
else
begin
if not m_bFullScreen then begin
result := S_OK;
Exit;
end;
end;

// Invalidate the old display objects
m_bDisplayReady := FALSE;
InvalidateDisplayObjects;

// Set up the new presentation paramters
if bFullScreen then
begin
m_d3dpp.Windowed := FALSE;
m_d3dpp.hDeviceWindow := m_hWndMain;
m_dwScreenWidth := dwWidth;
m_d3dpp.BackBufferWidth := dwWidth;
m_dwScreenHeight := dwHeight;
m_d3dpp.BackBufferHeight := dwHeight;
m_d3dpp.BackBufferFormat := m_d3dfmtFullscreen;
end
else
begin
m_d3dpp.Windowed := TRUE;
m_d3dpp.hDeviceWindow := 0;
m_d3dpp.BackBufferWidth := 0;
m_d3dpp.BackBufferHeight := 0;

m_dwScreenWidth := dwWidth;
m_dwScreenHeight := dwHeight;

m_d3dpp.BackBufferFormat := m_DesktopMode.Format;
end;

// Reset the device
hr := m_pd3dDevice.Reset( m_d3dpp );
if SUCCEEDED(hr) then
begin
m_bFullScreen := bFullScreen;
hr := RestoreDisplayObjects;
if SUCCEEDED(hr) then
begin
m_bDisplayReady := TRUE;
result := S_OK;
Exit;
end;
end;

// If we get here, a fatal error occurred
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
result := E_FAIL;
end;

Все недостающие поля, описанные в реализации данного метода необходимо добавить в класс TD3DGameApp и инициализировать их в методе конструктора TD3DGameApp.Create и других необходимых методах, где это понадобится.

Заметьте, что внутри данного метода каждый раз при переключении между полноэкранным/оконным режимами или при смене разрешения полноэкранного режима происходит инвалидация InvalidateDisplayObjects всех зависимых от Direct3DDevice ресурсов, вызывается метод сброса устройства Direct3DDevice, а затем происходит восстановление ресурсов RestoreDisplayObjects

Этот момент очень важно учитывать при создании многоуровневых игр, в которых ресурсы для каждого уровня различны и загружаются при разных состояниях приложения. Тогда при переключении режимов инвалидация и восстановление необходимых ресурсов должна происходить в зависимости от заданного состояния приложения, в противном случае Вы получите логические ошибки, ошибки времени выполнения и множество других ошибок!!!

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

 
Для лучшего понимания этих важных моментов, Вам обязательно нужно познакомиться с исходным кодом игры [Пример игры Donuts3D], а также со статьями и исходниками посвященными работе над проектом Нечто: Необъяснимое
 
В качестве практики предлагаю Вам внедрить вышеописанные технологии в код проекта своего D3D-приложения посвященного практической работе над данным уроком.
 
[назад] [страница 1] [далее] [к содержанию]
 
 
 
 
     
     
     
     
     
подробнее

Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 9

Онлайн-комикс Костя Коробкин - В гостях у тёти Светы - интерактивный комикс (kk as).

- Красиво. Не знал, что такие улицы есть.

- Может зайдёшь ?

Костя Коробкин - В гостях у тёти Светы (- интерактивный комикс (kk as) - онлайн комикс - страница 9

если кликать картинку она будет последовательно меняться в размерах от 620 до 2048 пиксель.

[страница 1][страница 2] [страница 3] [страница 4] [страница 5] [страница 6] [страница 7] [страница 8]  [страница 9] [страница 10] 

     
  [статьи] [как создать игру ну, погоди!]  
     
  Основы создания 3d игр - проект Тайны Морских Глубин  
 
 

Вращения и Основы управления камерой: делаем первый шаг!

Вы узнаете о векторах, кватернионах, вращении и познакомитесь с основами управления камерой.

первый шаг
   
Скачиваний : 0
Скачиваний : 16
Скачиваний : 0
исходный код примера (29 Кб)
общий код (772 Кб) - необходим для разработки DirectX8.1-приложений на Delphi 6-7
медиа-файлы (676 Кб) - модели, текстуры, шейдеры - необходимы для выполнения данного и следующего примеров
   

Подлодка и подводный мир: следующий шаг.

Вы узнаете о использовании тумана для имитации подводного мира, использовании вершинных шейдеров для создания бликов на морском дне и поверхности подлодки.

подводный мир
   
Скачиваний : 0
Скачиваний : 16
исходный код примера (32 Кб)
общий код (772 Кб) - необходим для разработки DirectX8.1-приложений на Delphi 6-7
медиа-файлы (676 Кб) - необходимы для выполнения данного примера
   
Основы программирования под DirectX8.1 на Delphi 6-7 вы можете найти в данном разделе - Создание компьютерных игр DirectX8.1 на Delphi Здесь представлены примеры от простого к сложному, в которых показано как начать создание DirectX приложения на Delphi
 
     
     
megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



Имя не указано,  11 ноября 2012

Очень полезный сайт, особенно уроки по Delphi & DirectX. Интересная тема, по которой мало материалов на русском. Хотелось сказать спасибо.


Ответ админа >>>,  12 ноября 2012

Пожалуйста. Спасибо за отзыв, заходите еще


fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 1,2163