Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 03.06.2012, 23:21   #46
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Э-э-э. Что за чушь?! Поменял
sprites.Begin(SpriteSortMode.Immediate, BlendState.Opaque)
; на
sprites.Begin();
и фпс стало 400. Раньше было 100. В максе 153.
Ой, что-то я совсем запутался.
UPD:
SpriteSortMode.Immediate - ВРАГ. SpriteSortMode.Deferred - ДРУГ.
Теперь всё стало на свои места.



------------
(Offline)
 
Ответить с цитированием
Старый 04.06.2012, 00:01   #47
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Вопросы по XNA.

Сообщение от Nikich Посмотреть сообщение
Э-э-э. Что за чушь?! Поменял
Deferred: спрайты не отображаются до вызова SpriteBatch.End. Затем все вызовы направляются на графическое устройство в том порядке, в каком они были сделаны. В этом режиме многочисленные объекты SpriteBatch могут проводить вызовы Draw без конфликтов друг с другом. (Это режим по умолчанию.)
Immediate: метод Begin сразу же после вызова устанавливает настройки для графического устройства, а новые вызовы Draw сразу же выводят спрайты на экран. Но только один объект SpriteBatch может быть активен в данное время. Это самый быстрый режим
Правда тут опечатка скорее всего. ) самый медленный. у меня он тоже в 2-3 раза меньше фпс выдает.
(Offline)
 
Ответить с цитированием
Старый 04.06.2012, 00:13   #48
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

Тут имеется ввиду то, что в режиме Immediate спрайты выводятся сразу, а не при вызове метода End. Смысл в том, что в этом режиме будет столько вызовов рисования, сколько вызовов Draw. А в других режимах вывод графики будет отсортирован и выведен за меньшее число DIP'ов. В приведенном случае может быть всего один DIP, т.е. текстура всего одна. Но есть один минус сортировок не в "ручную" - вывод графики может быть не в том порядке, в котором был вызов Draw. Например если на экране рисовались две картинки чередуясь, то при сортировке могут сначала вывестись все вызовы первой картинки, потом все вызовы второй, что будет не правильно, если надо было вывести картинки чередуясь. Поэтому выбирать тот или иной режим надо от ситуации. Чаще лучше разделить вывод графики на экран на слои, чтобы добиться высокой производительности. Так же снизить число DIP'ов можно используя атласы, когда рисуются части одной и той же текстуры, но текстура например всего одна.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 4 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
Dream (04.06.2012), Nikich (04.06.2012), Randomize (05.06.2012), St_AnGer (05.06.2012)
Старый 04.06.2012, 16:04   #49
radiobutton
Бывалый
 
Регистрация: 16.09.2011
Сообщений: 863
Написано 257 полезных сообщений
(для 546 пользователей)
Ответ: Вопросы по XNA.

Данный процесс называется отсечение по пирамиде видимости, так как в данном случае мы проверяем, пересекается ли ограничивающая сфера объекта с пирамидой видимости, и если сфера не пересекается, то мы отсекает объект (то есть не отрисовываем его на экране). Стоит заметить, что этот метод не всегда является действенным - например, если мы отрисовываем множество мелких объектов, то на подобное отсечение мы можем и не тратить время, так как видеокарта итак не будет обрабатывать пиксели, которые находятся вне экрана.
Теперь собственно вопрос.
Вот скажем посылаем мы на видео карту объект какой нить. (Пускай будит Куб)
И этот куб не входит в зону видимости камеры. (ну за экраном он.)
Вершины этого объекта пройдут вершинный шейдер. И пиксельный?
На какой стадии определится что не нужно его будит рисовать?

Для мелких объектов не нужно делать проверку потому что эта проверка займет больше времени чем передача вершин этого объекта видеокарте и дальнейший проход по шейдерам?
Или же он пройдет вершинный шейдер, увидит что координаты получаются скажем 1025 500 (и остальные вершины куба тоже за экраном), поймет что Весь куб за экраном и не пошлет ничего в пиксельный шейдер?
(Offline)
 
Ответить с цитированием
Старый 05.06.2012, 17:18   #50
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

У меня вопрос возник. Кто-нибудь качал исходной код, прилагающийся к книге 3D Graphics with XNA Game Studio 4.0? У меня большая часть не работает, с ошибкой : "Cannot find importer "FbxImporter". Не знаете, с чем это может быть связано?
(Offline)
 
Ответить с цитированием
Старый 05.06.2012, 20:15   #51
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

не хватает проекта "FbxImporter" или он не подключен к проекту
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (06.06.2012)
Старый 05.06.2012, 20:48   #52
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Такого проекта нету и не должно быть. В обучение ничего про него не говорится.
(Offline)
 
Ответить с цитированием
Старый 05.06.2012, 20:55   #53
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

точно, он должен идти уже с XNA. посмотри версии какие используются в референсах проектов, возможно у тебя другая версия установлена. поудаляй референсы на пеплайны и подобавляй по новой
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (06.06.2012)
Старый 06.06.2012, 13:57   #54
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Спасибо!
После прочтения этой книги, стало ясно, что она направлена на шейдеры и графон, а не на основы создания 3Д игр. В связи с этим, возникло много вопросов. И вот первый из них: как сделать коллизии?
(Offline)
 
Ответить с цитированием
Старый 06.06.2012, 14:14   #55
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

ну, примитивные колизии - есть классы BoundingBox и BoundingSphere у них есть методы для получения пересечений и всё такое. если чтото сложнее - то всё также как и в любом другом движке - писать своё или использовать уже готовые физ движки
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (06.06.2012)
Старый 06.06.2012, 14:43   #56
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Спасибо.
А вот например, если у меня есть модель комнаты с дверным проемом, то как сделать так, чтобы я мог попасть в эту комнату? Ведь если создать только один BoundingBox, то внутрь я пройти не смогу. Надо создавать по отдельному BoundingBox на каждую стену?
И еще кое-что. Как делают физику для ступенек? То есть чтобы объект мог подниматься и опускаться по ступенькам.
(Offline)
 
Ответить с цитированием
Старый 06.06.2012, 20:06   #57
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: Вопросы по XNA.

Сообщение от Nikich Посмотреть сообщение
Спасибо.
А вот например, если у меня есть модель комнаты с дверным проемом, то как сделать так, чтобы я мог попасть в эту комнату? Ведь если создать только один BoundingBox, то внутрь я пройти не смогу. Надо создавать по отдельному BoundingBox на каждую стену?
если использоваться только те примитивы - то да, подругому ни как.
Сообщение от Nikich Посмотреть сообщение
И еще кое-что. Как делают физику для ступенек? То есть чтобы объект мог подниматься и опускаться по ступенькам.
- Если написать такуие примитивные колизии как у блица(там действительно всё очень примитивно) то будет и на небольшие ступеньки вылазить будет и в стены колизится.
Опятьже, повторяюсь - Bounding обьекты XNA не препятствуют ничем(да и как они могут то?) они просто дадут знать есть ли колизии с другими обьектами. не больше не меньше
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (06.06.2012)
Старый 06.06.2012, 22:20   #58
Nikich
Бывалый
 
Регистрация: 22.12.2011
Сообщений: 844
Написано 150 полезных сообщений
(для 275 пользователей)
Ответ: Вопросы по XNA.

Ясно.
Ступени, как я понял, дело вообще проблематичное. Это ведь придётся на каждую ступеньку BoundingBoх свой делать.
Очень интересно, как это в блитце сделали коллизии с объектами произвольной формы, ведь там любую модель загрузить можно, и коллизии правильно работать будут.
(Offline)
 
Ответить с цитированием
Старый 07.06.2012, 14:44   #59
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы по XNA.

К XNA подключаются некоторые физические движки без особых проблем. Можно использовать их для определения коллизий.
Вот например http://bepuphysics.codeplex.com/
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (07.06.2012)
Старый 08.06.2012, 14:38   #60
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Вопросы по XNA.

Баг:
Каждый ран приложения на XNA вызывает ошибку, библиотека MS C++ 2008 стоит,.NET 4 тоже:
APPCRASH
  Имя приложения:    WindowsGame1.exe
  Версия приложения:    1.0.0.0
  Отметка времени приложения:    4fc8e4c9
  Имя модуля с ошибкой:    KERNELBASE.dll
  Версия модуля с ошибкой:    6.1.7600.16385
  Отметка времени модуля с ошибкой:    4a5bdaae
  Код исключения:    e0434352
  Смещение исключения:    00009617
  Версия ОС:    6.1.7600.2.0.0.256.1
  Код языка:    1049
  Дополнительные сведения 1:    0a9e
  Дополнительные сведения 2:    0a9e372d3b4ad19135b953a78882e789
  Дополнительные сведения 3:    0a9e
  Дополнительные сведения 4:    0a9e372d3b4ad19135b953a78882e789
Почему?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 19:19.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com