Сообщения на форуме пользователя Andrey (215 стр.)
Direct3D:Компилятор ругается на значения из enum'а | 27 мая 2005 | 9:37 | #0 |
---|
пробую сделать фильтрацию текстуры:
#include<d3d9.h> #include<d3dtypes.h> ... pDevice -> SetTextureStageState(0, D3DTSS_COLOROP, D3DTOP_MODULATE); pDevice -> SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE); pDevice -> SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_DIFFUSE); pDevice -> SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_DISABLE); pDevice -> SetTextureStageState(0, D3DTSS_MIPFILTER, D3DTEXF_POINT); pDevice -> SetTextureStageState(0, D3DTSS_MAGFILTER, D3DTEXF_LINEAR); pDevice -> SetTextureStageState(0, D3DTSS_MINFILTER, D3DTEXF_LINEAR); ....
компилятор ругется:
c:\Andrey\C++\Движок\Direct3DTest\LevelResource.cpp(175): error C2065: 'D3DTSS_MIPFILTER' : undeclared identifier
c:\Andrey\C++\Движок\Direct3DTest\LevelResource.cpp(176): error C2065: 'D3DTSS_MAGFILTER' : undeclared identifier
c:\Andrey\C++\Движок\Direct3DTest\LevelResource.cpp(177): error C2065: 'D3DTSS_MINFILTER' : undeclared identifier
смотрю заголовочный файл d3dtypes.h:
.... typedef enum _D3DTEXTURESTAGESTATETYPE { D3DTSS_COLOROP = 1, /* D3DTEXTUREOP - per-stage blending controls for color channels */ D3DTSS_COLORARG1 = 2, /* D3DTA_* (texture arg) */ D3DTSS_COLORARG2 = 3, /* D3DTA_* (texture arg) */ D3DTSS_ALPHAOP = 4, /* D3DTEXTUREOP - per-stage blending controls for alpha channel */ D3DTSS_ALPHAARG1 = 5, /* D3DTA_* (texture arg) */ D3DTSS_ALPHAARG2 = 6, /* D3DTA_* (texture arg) */ D3DTSS_BUMPENVMAT00 = 7, /* D3DVALUE (bump mapping matrix) */ D3DTSS_BUMPENVMAT01 = 8, /* D3DVALUE (bump mapping matrix) */ D3DTSS_BUMPENVMAT10 = 9, /* D3DVALUE (bump mapping matrix) */ D3DTSS_BUMPENVMAT11 = 10, /* D3DVALUE (bump mapping matrix) */ D3DTSS_TEXCOORDINDEX = 11, /* identifies which set of texture coordinates index this texture */ D3DTSS_ADDRESS = 12, /* D3DTEXTUREADDRESS for both coordinates */ D3DTSS_ADDRESSU = 13, /* D3DTEXTUREADDRESS for U coordinate */ D3DTSS_ADDRESSV = 14, /* D3DTEXTUREADDRESS for V coordinate */ D3DTSS_BORDERCOLOR = 15, /* D3DCOLOR */ D3DTSS_MAGFILTER = 16, /* D3DTEXTUREMAGFILTER filter to use for magnification */ D3DTSS_MINFILTER = 17, /* D3DTEXTUREMINFILTER filter to use for minification */ D3DTSS_MIPFILTER = 18, /* D3DTEXTUREMIPFILTER filter to use between mipmaps during minification */ D3DTSS_MIPMAPLODBIAS = 19, /* D3DVALUE Mipmap LOD bias */ D3DTSS_MAXMIPLEVEL = 20, /* DWORD 0..(n-1) LOD index of largest map to use (0 == largest) */ D3DTSS_MAXANISOTROPY = 21, /* DWORD maximum anisotropy */ D3DTSS_BUMPENVLSCALE = 22, /* D3DVALUE scale for bump map luminance */ D3DTSS_BUMPENVLOFFSET = 23, /* D3DVALUE offset for bump map luminance */ #if(DIRECT3D_VERSION >= 0x0700) D3DTSS_TEXTURETRANSFORMFLAGS = 24, /* D3DTEXTURETRANSFORMFLAGS controls texture transform */ #endif /* DIRECT3D_VERSION >= 0x0700 */ D3DTSS_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */ } D3DTEXTURESTAGESTATETYPE; .... |
как видно эти константы присутствуют наряду с другими в одном enum'е но почему-то он именно на эти 3 константы ругается...
пробовал компилировать на Visual C++ 6.0 и Visual C++.Net 2002
DirectX SDK 9.0 с обновлением февраль 2005...
что это может быть?
Спасибо всем заранее.
С уважением Андрей
DX9c vs VC6 | 27 мая 2005 | 9:01 | #7 |
---|
WW
DK
st0ke
Ребят дак все таки как заставить собрать проект использыющий DirectX 90с под Visual C++ 6.0?
DX9c vs VC6 | 27 мая 2005 | 9:01 | #6 |
---|
WW
DK
st0ke
Ребят дак все таки как заставить собрать проект использыющий DirectX 90с?
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 19:45 | #36 |
---|
>Тебе пасиба! Пожелал-бы удачи, тогда! ;)
>Завтра экзамен, а я тут на форуме тусуюсь, нет бы готовиться =)
Ну что не пуха не пера!!!Удачи!!
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 19:15 | #33 |
---|
dimidrol
dark
Keysall
Sandman
У меня все заработало!!!!!!!!!!!!!!!!!!!!!
Описание проблемы - я нашел ошибку в реализации предотвращения дублирования полигонов попадающих в соседнии узлы дерева. до этого они у меня дублировались.
resurected_timofei
а ты был прав для простой сцены та и получается
сцена из 4869 полигонов
Octree - 72 FPS
Прямой рендер - 62
сцена из 5282 полигонов
Octree - 38
Прямой рендер - 46
Итого около 19% разница с учетом что малое число полигонов
resurected_timofei
>PS: Ты мне скажи, а что ты делаешь с дробными тругольниками между
>границ узлов? Мне самому интересно, что люди применяют ;)
Я просто веду временный массив и туда записываю индексы тех полигонов которые уже содержатся в созданных листьях. потом этот массив не нужен.
Теперь надо сделать сортироку по материалам. и продумать организацию рендера через вертексный буфер.
Спасибо всем выше перечисленным!!!!!!!!!!!!!!! Успехов вам
Тема закрыта
С уважением Андрей.
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 17:15 | #29 |
---|
>Сорри! =)
ничего страшного большой объем кода...ладно если будут идею скажи... я заметил 1 вешь у меня дублируются полигоны...:(
пробовал делать учет повторяющихся индексов получилось вмечто 5282 полигона около 500!!!
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 16:54 | #27 |
---|
>Ну добавь еще ограничение по количеству треугольников.
>Разве сложно? Только удобнее построением будет управлять.
дак это я делаю:
//если число полигонов меньше чем нужно то это является листом if (node -> GetNumberPoligons() <= OctreeNode::NUMBERPOLIGONS) { //становить флаг листа node -> SetLeaf(); ... } else//очистить полигоны node -> ClearPoligons();
Glut + MFC в VisualStudio6.0 | 26 мая 2005 | 16:47 | #1 |
---|
Видать может ресурсы не освобождаешь...проверь в деструкторы заходит к примеру... освободи все ресурсы потом вызывай exit.
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 15:24 | #25 |
---|
>проверь на простейшей сцене, правльно ли расчитываются размеры боксов для нодов
это давно уже правильно... глюки все исправлены
>зачем тебе флаг лист или нет....
>если сделать дочерние ноды вектором, то соответственно сыновей может быть либо 0 либо 2 и.т.д.
>значит если их 0 то это лист
Ну впринципе я это упростил это одно и тоже будет. что я флаг имею или что ты возвращаешь size() или empty() при использовании std::vector...
>вопрос:
>какие у тебя критерии окончания рекурсии (при построянии дерева)
глубина разбиения больше заданной.
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 13:53 | #20 |
---|
>После построения октри у тебя становится больше примитивов
Почему больше?можешь поподробней объяснить?у меня подозрения либо неправильно статику не виду и я так и не смог от дублирования избавится...
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 13:48 | #19 |
---|
Привет!!! как давно с тобой не общались!!!
>. алгоритм проверки bbox'а листа с frustum, ты проверяешь боксы листьев с фрастумом?
>и соответственно если нод не видим то и не рисуем содержимое
естесвенно смотри повторю:
//отображение дерева void Octree::Draw(Mesh *mesh, OctreeNode *&node, const Frustum& frustum) { if (!node) return; //отображение Bounding Box'а для отладки if (DrawBox) node -> DrawBoundingBox(); //Если нет потомков //отобразить узел if (node -> IsLeaf()) { node -> Draw(model, frustum); ... return; } int i; //дочерний узел OctreeNode *childNode; //цикл по дочерним узлам for (i = 0; i < 8; i++) { //получить дочерний узел childNode = node -> GetChildNode(i); //если узел существует if (childNode) //проверка нахождения в пирамиде видимости if (frustum.BoundingBoxInFrustum(childNode -> GetBoundingBox())) //рекурсивное отображение остальных узлов Draw(mesh, childNode, frustum); } }
нету такого...(пока)
>сколько источников сцены?
это как понимать?
>и сколько текстур и каких они размеров
меньше 10 размер различный 512х512,512х256,256х256
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 13:26 | #16 |
---|
да блин из этого следует надо перделать для начала организацию и отрисовку Mesh'а...
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 12:11 | #14 |
---|
gvm
так отсекал треугольники я изначально до Octree...
Посмотрите пост 7.... там я писал про это...
в общем в моей тестовой программе есть отключенияпроверки отсечения каждого треугольника.
Иными словами я сравниваю рендеринг сцены без оптимизации и рендер с помощью Octree-дерева
и там и тпм равные условия: т.е. может Выключено/Включено отсечение трекгольников
эффект такой-же
Вопрос почему медленнее при рендере через Octree?
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи. | 26 мая 2005 | 10:50 | #11 |
---|
Спасибо мне уже про это говорили давно...ясно в общем надо пересматривать организацию Mesh'а...
Кто нибудь ответит почему при равных условиях а именно и там и там по 1 треугольнику через Octree скорость у меня меньше?