Мобильная версия сайта | |||||||||
[Главная] | [Новости] | [Статьи] |
[Проекты] |
[Ссылки] |
[Автор] |
||||
[Архив новостей] | |||||||||
[Форум] | на форуме можно задать вопрос, посмотреть ответы на часто задаваемые вопросы | ||||||||
Здравствуйте! Вы попали на информационно-образовательный сайт посвященный информатике, информационным технологиям и компьютерным играм. Подробнее о целях и задачах сайта в разделе Главная. [English version of this page here...] | |||||||||
[Базовые уроки по DirectX] [Основы DirectMusic на Delphi] [Основы DirectInput8 на Delphi] [Основы DirectSound8 на Delphi] | |||||||||
[Разработка компьютерной игры] [Пример игры Donuts3D] [Delphi DirectX] | |||||||||
Эмулятор электронной игры Электроника ИМ-02 "Ну, Погоди!" | |||||||||
скачайте полную версию игры, зарегистрируйтесь и получите бесплатно полный исходный код игры для компиляции в delphi 7 или 2006 и уроки delphi directx 8.1 содержащие статьи по созданию собственной 2D/3D игры в среде delphi directx | |||||||||
Урок 3 Оконный и полноэкранный режимы работы D3D-приложения | |||||||||
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1 | |||||||||
Далее у читателя подразумевается наличие базовых знаний языка Delphi. | |||||||||
[назад] [страница 3] [далее] [к содержанию] | |||||||||
Ответим на вопросы заданные на предыдущей странице | |||||||||
Судя по исходному коду оригинальных примеров из DXSDK8, 9 правильно вызывать Clear до BeginScene ... EndScene, а не между этими методами. Возможно это влияет на производительность. Для простых примеров это может быть и не заметно, но в "тяжелых" приложениях это возможно даст некоторый прирост. | |||||||||
Ответ на второй вопрос: procedure
CMyD3DApplication.DrawGameScene; end; теперь остается выяснить почему не работает backImage.Draw2
|
|||||||||
Если
выполнить отладку и заглянуть в модуль D3DGUI.pas метод function TD3DImage2D.Draw2(x,
y, z: Single; fXScale, fYScale: Single; то, видно, что структура vp: TD3DViewport8; при вызове метода m_pd3dDevice.GetViewport(vp); дает совершенно необъяснимые размеры окна Viewport Если протестировать вызов данного метода в коде примера VCLTex модуль VCLTexUnit.pas внутри метода CMyD3DApplication.InitDeviceObjects то результат будет тот же. Таким образом решением является выяснение причины по которой вызов метода запроса параметров рабочей области отрисовки дает такие результаты. Та же проблема при выводе масштабируемого текста D3DFont.pas CD3DFont.DrawTextScaled Почему же в примере FullscreenMode всё работает как надо?
|
|||||||||
Ответ на этот вопрос Вы найдете проработав наш следующий - 4 урок, посвященный разработке класса D3D-приложения. А коротко ответ на него звучит так - |
|||||||||
модуль D3DApp.pas, метод CD3DApplication.Initialize3DEnvironment //
Create the device
hr := m_pD3D.CreateDevice(m_dwAdapter, pDeviceInfo^.DeviceType, В чём же причина? Если заглянуть в документацию по DirectX 8 ,то в описании IDirect3D8::CreateDevice вы найдете список значений параметра BehaviorFlags среди них D3DCREATE_PUREDEVICE = $10; и D3DCREATE_HARDWARE_VERTEXPROCESSING = $40; именно то значение, которое имеет данный флаг если использовать строку кода, которая показана закомментированной (зеленого цвета) Приведенный чуть ниже код исправляет данный недостаток! Причина объяснена в документации по DirectX 8 - D3DCREATE_PUREDEVICE
Т. е. установка данного флага не позволяет вызывать методы Get* и требует использования только пост-трансформированных вершин. Метод GetViewport как раз и не выдает при этом нужной информации! |
|||||||||
[назад] [страница 3] [далее] [к содержанию] | |||||||||
по всем вопросам пишите на megainformatic@mail.ru или оставьте сообщение на форуме | |||||||||
Обновления
и новости о развитии Delphi DirectX проекта http://www.megainformaticsite.pochta.ru http://www.megainformatic.boom.ru http://www.megainformatic.narod.ru
|
|||||||||
Cвои пожелания, вопросы или заметки отправляйте на: megainformatic@mail.ru или пишите на форуме |
|||||||||
Обмен ссылками | |||||||||
|
|||||||||
(с) МЕГА ИНФОРМАТИК 2006-2009 | |||||||||