Куча вопросов


Автор Сообщение

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 11-11-2009 21:48
У меня накопилось очень много вопросов, поэтому я решил изложить их в одной. Вот целый список:
1. А как так получается, что если поместить функцию ViewerRender() не в Step, а в Alarm, fps увеличивается?
2. Ещё я заметил, что в примерах иногда увеличивается fps в 1,5 раза, но не сразу, а примерно через 10-20 секунд. Например, в примере "csm.gm6" (немного переделанном: я поменял событие Step на Alarm0, сделал вид размером 1280х1024 и во весь экран, поставил fps в настройках комнаты на 2000 и добавил текст на экран, который показывает fps) fps вначале было около 800, а через некоторое время становится 1400. Один раз даже дошло до 1750 кадров в секунду. Но иногда fps не увеличивается и примерно равно 800. Кстати, я заметил, что когда fps возрастает, компьютер немного гудит.
3. При создании объекта Trail у меня вылетает из игры. Почему? Я делаю всё, как написано в справке.
4. Xteme3D поддерживает многоядерные процессоры?
5. Я собираюсь делать уровень из примитивов в собственном редакторе карт. Можно ли сделать качественное освещение и тени, чтобы это не сильно повлияло на fps? Например, чтобы Xtreme3D сам генерировал карту освещения и потом не тратил время на освещение. Как в примере "csm.gm6": загружается уровень с качественным освещением и fps 1500 кадров в секунду. Кстати, в справке не написано, что Freeform поддерживает формат .csm.
6. Можно ли определить, по какому материалу игрок ходит? Я в своей игре хочу сделать разную скорость игрока и разные звуки для хождения по траве, земле, дереве и т.д.
7. У меня нет почему-то функций DCE и ландшафтов. Та ли у меня версия Xtreme3D?

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 12-11-2009 10:12
1. Для себя я решил, что это происходит из-за снижения нагрузки на CPU и GPU. Событие Step обычно вызывается с огромной частотой - GPU может быть просто не в состоянии так быстро перерисовывать экран (особенно в сложных сценах, где приходится много раз обращаться к памяти или вычислять что-то на CPU). Если рисовать не каждый шаг, а через один или два, у системы высвобождается несколько миллисекунд, в течение которых можно "отдохнуть" от рендеринга.

2. Система обычно сама определяет, сколько fps сейчас можно рендерить. Это, скорее всего, происходит на аппаратном уровне.

3. В справке не все может быть правильно, посмотри этот пример, там есть trail и он должен работать.

4. Посмотрим на это с такой стороны: Xtreme3D основан на спецификации OpenGL 1.3. Встроенной поддержки многопоточности там, вероятнее всего, нет. Да и вычисления почти все производятся на GPU, а ты, похоже, имел в виду многоядерные CPU. Теоретически, наверное, можно распараллеливать неграфические вычисления (Water, Octree, Raycasting, загрузку ресурсов и т.д.), но уж точно не на гейм мейкере, и потом я в этом не шарю.

5. Для примитивов сгенерировать карту освещения невозможно. Для внешних форматов (obj, 3ds) - можно, но в X3D автоматической генерации нет, придется либо писать ее самостоятельно с нуля, либо использовать сторонние программы (например, Lightmap Maker). А про *.csm спасибо, запамятовал.

6. Интересный вопрос! Стандартной функции для определения материала объектов в X3D нет, но зато есть ObjectSetName и ObjectGetName. В это имя можно записать любую информацию, например - материал. Или номер звука, который должен воспроизводиться.
А вот узнать, по какому объекту игрок ходит - это уже сложнее. Тут могут быть разные алгоритмы, долго объяснять, а ты, я вижу, начинающий, поэтому мой тебе совет - вернись к этому попозже.

7. Не та. DCE и ландшафты в версии 2.0.2.0. Посмотри на сайте, разделы Xtreme3D V2 Full и Xtreme3D V2 Lite.

бывалый
Группа: Участники
Сообщений: 49
Добавлено: 12-11-2009 17:26
Спасибо за ответы.
Кстати, я проверил многоядерность. Я запустил пример и диспетчер задач. Диспетчер задач показывал, что используются все 4 ядра: один почти на всю, остальные где-то на треть. Общая загрузка ЦП была 50% (когда пример не запущен загрузка ЦП 0%.).
А будут ли новые версии Xtreme3D? то хорошо бы, чтобы можно было генерировать карту освещения.
Ещё один вопрос: Можно ли сделать детальное освещение примитивов без разбиения на несколько? Я раньше использовал Ultimate3D, и от разбиения сильно падало fps, а по пиксельное освещение работает только для моделей и действует только для 3-х источников освещения, а в своём редакторе я могу их сделать сколько угодно. Из-за этого я и разочаровался в U3D (и ещё после того, как увидел в примере Xtreme3D гигантский fps).

Big Boss
Группа: Администраторы
Сообщений: 719
Добавлено: 12-11-2009 21:29
А будут ли новые версии Xtreme3D?

Может, и будут. Официально разработка Xtreme3D давно заброшена ее автором, но я работаю над созданием собственной версии библиотеки.

Можно ли сделать детальное освещение примитивов без разбиения на несколько?

Можно. В X3D попиксельное освещение (BumpShader) отлично работает и с моделями, и с примитивами, и поддерживает до 8 источников света (но на практике я больше 5 никогда не ставил, так как железо не слишком мощное).

 

Offtop.ru © 2003