GameDev.ru
/ GameDev.ru / Пользователи / Andrey / Сообщения на форуме пользователя Andrey (168 стр.)

Сообщения на форуме пользователя Andrey (168 стр.)

Octtree реализация в DirectX11 авг. 200612:36#21
DioS
Опять начинаешь что-то выдумывать????? ты в практике попробуй это реализуй... сразу перестанешь идеи левые кидать ;)
Слушай Семен'а, он поопытней тебя в несколько раз.
Octtree реализация в DirectX10 авг. 200619:18#13
Scart
>Хранить [ несколько/один(если хватит) ] IB, или хранить начальные индексы и смещение и собирать IB налету?
хранить 1 IB и выставлять идексы и смещения.
Octtree реализация в DirectX10 авг. 200613:38#10
DioS
>ты предлагаешь хранить в каждом узле ВСЕ индексы вершин подузлов?
нет
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());

}
surfaces - это структура данных хранящая геометрию в памяти (для столкновений и т.д.) + число полигонов(смещение) и начальный индекс группы полигонов откуда надо брать данный в VB/IB
Индексный бкуфер пока сделать не получилось :(  т.к. все было давно и в экспортере не было предусмоьрено.
каждый лист хранит массив таких стуктур.
ну в общем в кратце все...
советую прислушаться к словам:
Семен
>Современный подход - хранить в узлах octree объекты на отрисовку, каждый со своим участком в VB/IB (они могут шейриться >между разными объектами). В этом случае никаких динамических данных на карточку не пересылается, а просто отдаются >вызовы на отрисовку некоторого участка индексов-вертексов.
Именно так у меня сделано но без IB (но над этим работаю...)
Octtree реализация в DirectX9 авг. 200618:29#4
stim24
>Так это выходит рендорить кучу примитивов с N1 по N2 и потом еще с M1 по M2 .. чет не совсем пойму как это реализовать
делаешь  1 VertexBuffer и IndexBuffer для всего Octree дерева...
в каждом узле хранишь стартовые индексы и смещение для буфера.
перед рендером выставляешь вершинный и индексный буфер и проверяешь попадание узлов.
в листях делаешь DIP.
Алгоритм сортировки объектов по параметру(float) в порядке убывания?28 июля 200613:22#13
Breezy
>...чтото я не слышал до этого чтоб qsort ктонибудь перебил в скорости.
к примеру std::sort, может заинлайнить функцию сравнения.
[D3D] Нужно ли использовать .fx?27 июля 200613:35#6
korak
>...затраты на отрисовку 1го меша у тебя становятся больше по умолчанию
а моджно поподробнее?
Подписываюсь...
Скелетная анимация в Delphi & OpenGL25 июля 200618:03#2
Aut
http://home.gna.org/cal3d/
хорошая библиотека. учи C++.
Пишу 3D движок, нужна помощь13 июля 200617:33#30
Sir Arthur
>Если мы укажем ключевое слово inline, компилятор будет каждый раз в месте вызова функции встраивать ее тело
нет ты не прав, с inline компилятор подумает вставлять или нет в зависимости от ситуации, а вот [/b]__forceinline/always_inline[/b] (Microsoft Visual C++/gcc)
вот тут он беззаговорочновставит код и зи последствия ты будешь отвечать сам. Мне кажеться большинсово функция математики следует объявлять как __forceinline, к примеру математика в Direct3D использует это ключевое слово. судя по D3DX9math.h
посоветуйте контейнер в С++ для хранения объектов12 июля 200619:13#70
CStalker
попробуй
std::vector<boost::shared_ptr > objects;
или boost::ptr_vector
objects;
Потестите мужика11 июля 200617:48#3
Mike3D
какой формат моделей?
проблем нет
Где найти ОреnGL 2.0 SDK?7 июля 200619:49#6
slyfox
>а вот RedBook мне и на английском найти не удалось.
заслал на почту...
извини что не предупредил
>А описания к extension'ам, которые вошли в OpenGL 2.0, как назло убрали все.
у меня есть glspec 2.0 надо?
Загрузка TGA6 июля 200619:03#15
FreemaN
>...текстурки загружать процедурой ilLoadData(...)?
ответ в 1 посте ;)
PrintScreen с OpenGL'я6 июля 200619:01#3
FMPiratt
вот можно еще короче но с помощью 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 и IB6 июля 200618:57#1
подписываюсь
Что такое Delphi?4 июля 200617:20#61
ну вот, снова(опять) остойный Delphi в пролете :)
дльфисты не пинать я "убогий" не говорил ;)

Следующие темы >>

2001—2012 © GameDev.ru — Разработка игр