Сообщения на форуме пользователя Andrey (168 стр.)
Octtree реализация в DirectX | 11 авг. 2006 | 12:36 | #21 |
---|
DioS
Опять начинаешь что-то выдумывать????? ты в практике попробуй это реализуй... сразу перестанешь идеи левые кидать ;)
Слушай Семен'а, он поопытней тебя в несколько раз.
Опять начинаешь что-то выдумывать????? ты в практике попробуй это реализуй... сразу перестанешь идеи левые кидать ;)
Слушай Семен'а, он поопытней тебя в несколько раз.
Octtree реализация в DirectX | 10 авг. 2006 | 19:18 | #13 |
---|
Scart
>Хранить [ несколько/один(если хватит) ] IB, или хранить начальные индексы и смещение и собирать IB налету?
хранить 1 IB и выставлять идексы и смещения.
>Хранить [ несколько/один(если хватит) ] IB, или хранить начальные индексы и смещение и собирать IB налету?
хранить 1 IB и выставлять идексы и смещения.
Octtree реализация в DirectX | 10 авг. 2006 | 13:38 | #10 |
---|
DioS
>ты предлагаешь хранить в каждом узле ВСЕ индексы вершин подузлов?
нет
stim24
>чтот не совсем понял как хранить смещения? у нас есть VertexBuffer я чтот не совсем пойму как их него вычленять нужные нам >примитивы?
берешь загружвешь геометрию... делаешь сортировку по материалам шедерам и т.д.
создаешь Octree дерево... "рассовываешь" те группы примитивов которые попадают в конкретный узел вв виде начальной вершины и смещения для каждого листа. а делатся все просто. При "ассоциации" данных в листьях ты просто смещаешься по общему VB/IB Octree дерева. при очерной связке данных для следующего листа.
Вот так отрисовка идет:
surfaces - это структура данных хранящая геометрию в памяти (для столкновений и т.д.) + число полигонов(смещение) и начальный индекс группы полигонов откуда надо брать данный в VB/IB
Индексный бкуфер пока сделать не получилось :( т.к. все было давно и в экспортере не было предусмоьрено.
каждый лист хранит массив таких стуктур.
ну в общем в кратце все...
советую прислушаться к словам:
Семен
>Современный подход - хранить в узлах octree объекты на отрисовку, каждый со своим участком в VB/IB (они могут шейриться >между разными объектами). В этом случае никаких динамических данных на карточку не пересылается, а просто отдаются >вызовы на отрисовку некоторого участка индексов-вертексов.
Именно так у меня сделано но без IB (но над этим работаю...)
>ты предлагаешь хранить в каждом узле ВСЕ индексы вершин подузлов?
нет
stim24
>чтот не совсем понял как хранить смещения? у нас есть VertexBuffer я чтот не совсем пойму как их него вычленять нужные нам >примитивы?
берешь загружвешь геометрию... делаешь сортировку по материалам шедерам и т.д.
создаешь Octree дерево... "рассовываешь" те группы примитивов которые попадают в конкретный узел вв виде начальной вершины и смещения для каждого листа. а делатся все просто. При "ассоциации" данных в листьях ты просто смещаешься по общему VB/IB Octree дерева. при очерной связке данных для следующего листа.
Вот так отрисовка идет:
// Octree void Octree::Draw(const Render* render) const { CurNumberPolygons = 0; if (ok) { // выставление вершинного буфера Direct3D SetStreamSource, OpenGL glBindBufferARB render->SetVertexBuffer(octreeVertexBuffer); } // рекурсивный проход по узлам с проверкой видимости.. Draw(render, root.get(), render-> GetCamera()); } //отображение дерева void Octree::Draw(const Render* render, const OctreeNode *node, Camera& camera) const { if (!node) return; .... //цикл по дочерним узлам for (i = 0; i < node->GetNumChildNodes(); i++) { //проверка нахождения в пирамиде видимости if (camera.GetFrustum().BoundingBoxInFrustum( node->GetChildNode(i)->GetBoundingBox())) //рекурсивное отображение остальных узлов Draw(render, node->GetChildNode(i), camera); } } //отображение узла естественно рендериться только листья... void OctreeNode::Draw() const { // идет дополнительный код // отображение полигонов... врапперный метод над 3D API // для Direct3D DrawPrimitive для OpenGL glDrawArrays render->DrawVertexBuffer(Render::TRIANGLE_LIST, surfaces[i].GetStartVertex(), surfaces[i].GetNumFaces()); } |
Индексный бкуфер пока сделать не получилось :( т.к. все было давно и в экспортере не было предусмоьрено.
каждый лист хранит массив таких стуктур.
ну в общем в кратце все...
советую прислушаться к словам:
Семен
>Современный подход - хранить в узлах octree объекты на отрисовку, каждый со своим участком в VB/IB (они могут шейриться >между разными объектами). В этом случае никаких динамических данных на карточку не пересылается, а просто отдаются >вызовы на отрисовку некоторого участка индексов-вертексов.
Именно так у меня сделано но без IB (но над этим работаю...)
Octtree реализация в DirectX | 9 авг. 2006 | 18:29 | #4 |
---|
stim24
>Так это выходит рендорить кучу примитивов с N1 по N2 и потом еще с M1 по M2 .. чет не совсем пойму как это реализовать
делаешь 1 VertexBuffer и IndexBuffer для всего Octree дерева...
в каждом узле хранишь стартовые индексы и смещение для буфера.
перед рендером выставляешь вершинный и индексный буфер и проверяешь попадание узлов.
в листях делаешь DIP.
>Так это выходит рендорить кучу примитивов с N1 по N2 и потом еще с M1 по M2 .. чет не совсем пойму как это реализовать
делаешь 1 VertexBuffer и IndexBuffer для всего Octree дерева...
в каждом узле хранишь стартовые индексы и смещение для буфера.
перед рендером выставляешь вершинный и индексный буфер и проверяешь попадание узлов.
в листях делаешь DIP.
Алгоритм сортировки объектов по параметру(float) в порядке убывания? | 28 июля 2006 | 13:22 | #13 |
---|
Breezy
>...чтото я не слышал до этого чтоб qsort ктонибудь перебил в скорости.
к примеру std::sort, может заинлайнить функцию сравнения.
>...чтото я не слышал до этого чтоб qsort ктонибудь перебил в скорости.
к примеру std::sort, может заинлайнить функцию сравнения.
[D3D] Нужно ли использовать .fx? | 27 июля 2006 | 13:35 | #6 |
---|
korak
>...затраты на отрисовку 1го меша у тебя становятся больше по умолчанию
а моджно поподробнее?
Подписываюсь...
>...затраты на отрисовку 1го меша у тебя становятся больше по умолчанию
а моджно поподробнее?
Подписываюсь...
Скелетная анимация в Delphi & OpenGL | 25 июля 2006 | 18:03 | #2 |
---|
Пишу 3D движок, нужна помощь | 13 июля 2006 | 17:33 | #30 |
---|
Sir Arthur
>Если мы укажем ключевое слово inline, компилятор будет каждый раз в месте вызова функции встраивать ее тело
нет ты не прав, с inline компилятор подумает вставлять или нет в зависимости от ситуации, а вот [/b]__forceinline/always_inline[/b] (Microsoft Visual C++/gcc)
вот тут он беззаговорочновставит код и зи последствия ты будешь отвечать сам. Мне кажеться большинсово функция математики следует объявлять как __forceinline, к примеру математика в Direct3D использует это ключевое слово. судя по D3DX9math.h
>Если мы укажем ключевое слово inline, компилятор будет каждый раз в месте вызова функции встраивать ее тело
нет ты не прав, с inline компилятор подумает вставлять или нет в зависимости от ситуации, а вот [/b]__forceinline/always_inline[/b] (Microsoft Visual C++/gcc)
вот тут он беззаговорочновставит код и зи последствия ты будешь отвечать сам. Мне кажеться большинсово функция математики следует объявлять как __forceinline, к примеру математика в Direct3D использует это ключевое слово. судя по D3DX9math.h
посоветуйте контейнер в С++ для хранения объектов | 12 июля 2006 | 19:13 | #70 |
---|
CStalker
попробуй
std::vector<boost::shared_ptr
попробуй
std::vector<boost::shared_ptr
Потестите мужика | 11 июля 2006 | 17:48 | #3 |
---|
Mike3D
какой формат моделей?
проблем нет
какой формат моделей?
проблем нет
Где найти ОреnGL 2.0 SDK? | 7 июля 2006 | 19:49 | #6 |
---|
slyfox
>а вот RedBook мне и на английском найти не удалось.
заслал на почту...
извини что не предупредил
>А описания к extension'ам, которые вошли в OpenGL 2.0, как назло убрали все.
у меня есть glspec 2.0 надо?
>а вот RedBook мне и на английском найти не удалось.
заслал на почту...
извини что не предупредил
>А описания к extension'ам, которые вошли в OpenGL 2.0, как назло убрали все.
у меня есть glspec 2.0 надо?
Загрузка TGA | 6 июля 2006 | 19:03 | #15 |
---|
FreemaN
>...текстурки загружать процедурой ilLoadData(...)?
ответ в 1 посте ;)
>...текстурки загружать процедурой ilLoadData(...)?
ответ в 1 посте ;)
PrintScreen с OpenGL'я | 6 июля 2006 | 19:01 | #3 |
---|
FMPiratt
вот можно еще короче но с помощью DevIL(OpenIL)
в самом начале инициализация
вот можно еще короче но с помощью DevIL(OpenIL)
в самом начале инициализация
//инициализация рендера ilutRenderer(ILUT_OPENGL); ... //создаем скриншот для OpenGL окна ilutGLScreen(); //удалить на всякий случай remove(filename.c_str()); //сохраняем файл int res = ilSaveImage(reinterpret_cast<ILstring>(const_cast<char *>(filename.c_str()))); if (!res) { //Получение кода ошибки int err = ilGetError(); //Если код не равен нулю ошибка была if (err != IL_NO_ERROR) { //Получение строки с ошибкой const char* strError = reinterpret_cast<char*>(iluErrorString(err)); //добавить сообщение OutMessage(Console::ERROR_MESSAGE, "%s%s%s", Console::StdMessage[Console::SIMPLE_ERROR], strError, "\n"); return false; } } ... |
единый VB и IB | 6 июля 2006 | 18:57 | #1 |
---|
подписываюсь
Что такое Delphi? | 4 июля 2006 | 17:20 | #61 |
---|
ну вот, снова(опять) остойный Delphi в пролете :)
дльфисты не пинать я "убогий" не говорил ;)
дльфисты не пинать я "убогий" не говорил ;)