Re: Отделение логики от представления
От: VolT Россия  
Дата: 21.05.04 02:05
Оценка:
Здравствуйте, UGN, Вы писали:

UGN>Вопрос (теоретический): как такой подход (отделение логики от представления) применяют в 3D графике.


UGN>Допустим, я хочу сделать бродилку.

//*************************\\
Похвально
//*************************//
UGN>На уровне логики у меня описаны все соответствующие классы, расчитывается их поведение, взаимодействие с окружающим миром.
UGN>Потом, по рассчитанным данным графическая библиотека ( напр. DX ) рисует картинку.

UGN>Вопрос: где считаются размеры объектов, их столкновения и проч?

//*************************\\
А где хочешь!!
//*************************//
UGN>Насколько я знаю, DX сам преобразует координаты (перемещения, повороты), сам и коллизии может посчитать. А зачем?
//*************************\\
А затем чтоб облегчить и ускорить расзаботку приложения.. Если хочешь писать это сам — все в твоих руках! Никто не запрещает тебе самому рассчитывать и повороты, и перемещения и коллизии.
//*************************//
UGN>Ведь это неправильно? Разве это не должно считаться на уровне логики?
Это не должно, это по желанию разработчика...
UGN>Разве не на уровне логики я должен определять, уперся ли мой герой лбом стену, может ли он пойти вперед?
//*************************\\
Опять неверных подход Ты не должен!!! Ты можешь делать все, чего пожелаешь. )))
//*************************//
UGN>Это будет слишком медленно? Графический процессор оптимизирован под выполнение таких задач?
//*************************\\
Это будет зависеть от того, как ты напишешь логику. А вообще ты прав.. Графический акселератор как раз и акселерирует ))) эти задачи. Т.е. в т.ч. рассчитывает действия с 3Д объектами.
//*************************//
UGN>Как быть, если я хочу отделить код рисования от остального? Если вдруг захочу DX поменять на GL?
//*************************\\
Если хочешь — делай.
//*************************//
UGN>И вообще не понятно, как тогда все должно работать.
UGN>Может кто-нибудь просветить?
//*************************\\
Как работать... Да как придумаешь!! Можешь отдельно писать процедуру ПоворотОбъекта(Object* Obj, INT Angle, char XYZ) и на него ссылаться во всех местах своего движка. А уже в этой процедуре выбирать под какую библиотеку работаешь и соответственные телодвижения делать...
//*************************//
Каждый сам себе дебаггер..
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.