![]() |
Модераторы: Rickert, Alexeis, BorisVorontsov |
![]() ![]() ![]() |
|
Annihilator |
|
||||||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: нет Всего: 3 |
Недавно начал заниматься DirectX. Поначалу у меня был один объект - квадрат, который строился из vertexbuffer. Согласно архитектуре моего приложения, за рендеринг квадрата отвечал класс CApplication:
а за инициализация буфера отвечало окно
теперь же у меня добавился объект с индексированными вершинами, что понесло за собой следующие изменения в RenderingDirect3D
Теперь вопросы. 1. Если мы не знаем, сколько и каких объектов надо заранее отобразить, то соответственно не знаем, какие функции вызывать (DrawPrimitive/DrawIndexedPrimitive) то значит объект должен сам знать как себя отобразить, у него должен быть свой метод 2. Если объектов несколько, то у каждого должен быть свой локальный буфер вершин/индексов, т.е. у каждого объекта должно быть свое поле pDirect3DDevice Резюме: управление происходит уже не на уровне приложения, а на уровне объекта -------------------------- Пока все. Поправьте, пожалуйста, товарищи! -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
||||||
|
|||||||
xpromt |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.7.2007 Репутация: нет Всего: нет |
Вобще я тоже новичек в DirectX, тоже только начал изучать, но выскажу свои ПРЕДПОЛОЖЕНИЯ.
1. Как я понял, неиндексированные объекты больше применимы для двухмерной графики. Потому что при работе с текстурами и освещением желательно иметь индексированный объект. Поэтому заведомо в сцене должны участвовать только однотипные объекты. Вот насчет количества объектов пока не могу ничего предположить... 2. Насчет pDirect3DDevice . я думаю, что это создание устройства Direct3D отвечающее за всю сцену. А каждый объект имеет свой буффер вершин. И в функции рендеринга сцены отдельно прорисовывается каждый объект и потом уже производится вывод готовой картинки на экран. Это мое ПРЕДПОЛОЖЕНИЕ. Сам пока что с этим не сталкивался, но чувствую, что вот вот оно мне понадобится ![]() |
|||
|
||||
C/L |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 31.7.2004 Где: Самара Репутация: нет Всего: 1 |
DrawPrimitive как и DrawIndexedPrimitive передается с какого по какой треугольник рисовать объект. Так что в промежутки между объектами можно менять текстуру и все остальное, оставляя вертексный буфер в единственном числе. Что касается оптимального количества вершинных буферов - с этим параметром я еще не экспериментировал. Но думаю чем меньше буферов тем лучше.
|
|||
|
||||
Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: нет Всего: 3 |
Ок. Спасибо. А что скажут профессионалы. Может быть кто-нибудь предолжит примерную архитектуру?
-------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
Annihilator |
|
||||||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: нет Всего: 3 |
Значит вопрос состоит в следущем.
Здесь крутятся сообщения
А здесь должен проходить рендеринг объектов окна
Проблема в том, что я не знаю, как и где хранить объекты, которое должно отбразить окно Есть идея хранить их в векторе, засовывать туда при инициализации окна, все объекты производные от CShape
Это сообщение отредактировал(а) Annihilator - 12.4.2009, 16:34 -------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
||||||
|
|||||||
Annihilator |
|
|||
![]() bytegrinder ![]() ![]() Профиль Группа: Участник Сообщений: 493 Регистрация: 21.11.2006 Где: Омск Репутация: нет Всего: 3 |
Вопрос решил. Если кому инетерсно, пишите в личку.
-------------------- Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо |
|||
|
||||
![]() ![]() ![]() |
Вы можете найти полезным что... | |
|
|
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |