Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемkriconf.ru
1 Технологии создания многоплатформенного игрового движка Максим Строев
2 2КРИ 2004 Темы обсуждения Классификация платформ Классификация платформ Обзор средств разработки Обзор средств разработки Обзор аппаратных особенностей Обзор аппаратных особенностей Особенности представления графических и звуковых данных Особенности представления графических и звуковых данных
3 3КРИ 2004 Темы обсуждения Поддержка компиляторами стандарта С++ Поддержка компиляторами стандарта С++ Правила кодирования Правила кодирования Статический и динамический полиморфизм Статический и динамический полиморфизм Применение механизма свойств (traits) при создании многоплатформенных библиотек Применение механизма свойств (traits) при создании многоплатформенных библиотек
4 4КРИ 2004 Классификация платформ Игровые платформы PC, Playstation, Xbox, GameCube и т.д. PC, Playstation, Xbox, GameCube и т.д. Наличие мощных аппаратных графических и звуковых подсистем Наличие мощных аппаратных графических и звуковых подсистем Наличие специализированного API для создания игр Наличие специализированного API для создания игр
5 5КРИ 2004 Классификация платформ Универсальные платформы PDA (PocketPC, Palm) PDA (PocketPC, Palm) Отсутствие API для создание игр Отсутствие API для создание игр Сложность реализации высококачественного вывода графики и звука Сложность реализации высококачественного вывода графики и звука
6 6КРИ 2004 Обзор средств разработки GCC/EGCS Стандартизированность использования Стандартизированность использования Богатый вспомогательный инструментарий Богатый вспомогательный инструментарий Хорошая поддержка С/С++ (исключение: EGCS) Хорошая поддержка С/С++ (исключение: EGCS) Бесплатность и открытость развития Бесплатность и открытость развития Плохое тестирование и слабые оптимизационные возможности для «непопулярных» платформ Плохое тестирование и слабые оптимизационные возможности для «непопулярных» платформ
7 7КРИ 2004 Обзор средств разработки RedHat GNUPro Developer Tools Стабильность разработки и тестирования Стабильность разработки и тестирования Стандартизованность использования Стандартизованность использования Богатый вспомогательный инструментарий Богатый вспомогательный инструментарий Поддержка большого количества embedded систем Поддержка большого количества embedded систем Высокая стоимость тех. поддержки RedHat и обновлений Высокая стоимость тех. поддержки RedHat и обновлений
8 8КРИ 2004 Обзор средств разработки Metrowerks CodeWarrior Development Studio Хорошая поддержка С/С++ Хорошая поддержка С/С++ Специфическая среда разработки Специфическая среда разработки Коммерческий Коммерческий
9 9КРИ 2004 Обзор средств разработки Microsoft eMbedded Visual C++ Плохая поддержка языка С++ Плохая поддержка языка С++ Специфическая среда разработки (но: поддержка makefile) Специфическая среда разработки (но: поддержка makefile)
10 10КРИ 2004 Обзор аппаратных особенностей Что следует учитывать при разработке? Endianess (big-endian, little-endian) Endianess (big-endian, little-endian) Запись бинарных данных в одном endian, чтение на платформе с другим Запись бинарных данных в одном endian, чтение на платформе с другим
11 11КРИ 2004 Обзор аппаратных особенностей Что следует учитывать при разработке? Endianess (big-endian, little-endian) Endianess (big-endian, little-endian) Запись бинарных данных в одном endian, чтение на платформе с другим Запись бинарных данных в одном endian, чтение на платформе с другим Разрядность фундаментальных типов данных С++ Разрядность фундаментальных типов данных С++
12 12КРИ 2004 Обзор аппаратных особенностей Что следует учитывать при разработке? Endianess (big-endian, little-endian) Endianess (big-endian, little-endian) Запись бинарных данных в одном endian, чтение на платформе с другим Запись бинарных данных в одном endian, чтение на платформе с другим Разрядность фундаментальных типов данных С++ Разрядность фундаментальных типов данных С++ Выравнивание (alignment) Выравнивание (alignment) Требования и рекомендации Требования и рекомендации Natural alignment requirements Natural alignment requirements
13 13КРИ 2004 Особенности представления графических и звуковых данных Представление: внутренние внутренние внешнее внешнее Внутренние представление: «рефлексивное» представление «рефлексивное» представление внешнее описание прозрачности внешнее описание прозрачности
14 14КРИ 2004 Статический и динамический полиморфизм Динамический полиморфизм Механизмы наследования и виртуальных функций Механизмы наследования и виртуальных функций Тип выражения определяется во время исполнения Тип выражения определяется во время исполнения
15 15КРИ 2004 Статический и динамический полиморфизм Статический полиморфизм Параметризация одного типа другим Параметризация одного типа другим Реализуется на этапе компиляции Реализуется на этапе компиляции Специализация шаблонов Специализация шаблонов Почему важен? На этапе компиляции известны типы реализаций для целевой платформы.
16 16КРИ 2004 Механизм свойств (traits) Свойства (traits) являются множеством связанных типов и функций для применения данных типов. Как это работает?
17 17КРИ 2004 Механизм свойств (traits) Использование типов-тэгов для определения платформы. // File: Windows_platform.h struct win32_platform_tag { }; typedef win32_platform_tag current_platform_tag ; // File: WindowsCE_platform.h struct win32_ce_platform_tag { }; typedef win32_ce_platform_tag current_platform_tag ;
18 18КРИ 2004 Механизм свойств (traits) Реализация класса Mutex для нескольких платформ c применением динамического полиморфизма. struct general_mutex { virtual bool acquire() = 0; virtual bool release() = 0; }; struct windows_mutex : public general_mutex { virtual bool acquire() { … } virtual bool release() { … } }; general_mutex* create() { #if (CURRENT_PLATFORM == WIN32) return new windows_mutex; #endif }
19 19КРИ 2004 Механизм свойств (traits) Недостатки: Необходимость «фабрики реализаций» Необходимость «фабрики реализаций» Потеря оптимизации из-за наличия виртуальных вызовов Потеря оптимизации из-за наличия виртуальных вызовов Ограничение предоставляемых возможностей объявленным интерфейсом Ограничение предоставляемых возможностей объявленным интерфейсом Отсутствие необходимости в динамическом полиморфизме Отсутствие необходимости в динамическом полиморфизме Реализация класса Mutex для нескольких платформ c применением динамического полиморфизма.
20 20КРИ 2004 Механизм свойств (traits) Реализация класса Mutex для нескольких платформ c применением статического полиморфизма. template struct mutex_traits {}; // File: windows_mutex.h template struct mutex_traits { typedef HANDLE handle_type; static handle_type invalid_value() { return NULL; } static handle_type create() { … } static bool destroy(handle_type handle) { … } static bool acquire(handle_type handle) { … } static bool release(handle_type handle) { … } };
21 21КРИ 2004 Механизм свойств (traits) Реализация класса Mutex для нескольких платформ c применением статического полиморфизма. // File: Mutex.h template class mutex_holder { typedef Tr::handle_type handle_type; handle_type handle; public: mutex() : handle(Tr::create()) { ASSERT(handle != Tr::invalid_value()); } ~ mutex() {Tr::destroy(handle); } bool acquire() { return Tr:: acquire(handle); } bool release() { return Tr:: release(handle); } }; typedef mutex_holder > mutex;
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.