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

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

Direct3D:Компилятор ругается на значения из enum'а27 мая 20059: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 VC627 мая 20059:01#7
*DEAD*
WW
DK
st0ke
Ребят дак все таки как заставить собрать проект использыющий DirectX 90с под Visual C++ 6.0?
DX9c vs VC627 мая 20059:01#6
*DEAD*
WW
DK
st0ke
Ребят дак все таки как заставить собрать проект использыющий DirectX 90с?
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200519:45#36
resurected_timofei
>Тебе пасиба! Пожелал-бы удачи, тогда! ;)
>Завтра экзамен, а я тут на форуме тусуюсь, нет бы готовиться =)
Ну что не пуха не пера!!!Удачи!!
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200519:15#33
resurected_timofei
dimidrol
dark
Keysall
Sandman
У меня все заработало!!!!!!!!!!!!!!!!!!!!!
Описание проблемы - я нашел ошибку в реализации предотвращения дублирования полигонов попадающих в соседнии узлы дерева. до этого они у меня дублировались.
resurected_timofei
а ты был прав для простой сцены та и получается

сцена из 4869 полигонов
Octree - 72 FPS
Прямой рендер - 62

сцена из 5282 полигонов
Octree - 38
Прямой рендер - 46

Итого около 19% разница с учетом что малое число полигонов

resurected_timofei
>PS: Ты мне скажи, а что ты делаешь с дробными тругольниками между
>границ узлов? Мне самому интересно, что люди применяют ;)

Я просто веду временный массив и туда записываю индексы тех полигонов которые уже содержатся в созданных листьях. потом этот массив не нужен.

Теперь надо сделать сортироку по материалам. и продумать организацию рендера через вертексный буфер.

Спасибо всем выше перечисленным!!!!!!!!!!!!!!! Успехов вам
Тема закрыта
С уважением Андрей.

OpenGL26 мая 200517:19#6
Kvap
#include <gl\glew.h>//расширения OpenGL
#include <gl\wglew.h>//расширения OpenGL
//Подключение расширений OpenGL
#pragma comment(lib, "glew32.lib")

....
//инициализация расширений
	if (glewInit() != GLEW_OK)
		application.GetConsole().AddMessage(Console::INFO_MESSAGE_NO_TIME, " Ok\n");
	else
			application.GetConsole().AddMessage(Console::INFO_MESSAGE, " Ошибка при инициализации расширений\n");
....
//Проверить инициализацию расширения
	if (!wglSwapIntervalEXT)
		application.GetConsole().AddMessage(Console::INFO_MESSAGE, "Драйвер не поддерживает отключение V-Sync\n");
	else
		if (!wglSwapIntervalEXT(0))	//отключить V-Sync
			application.GetConsole().AddMessage(Console::INFO_MESSAGE, "Не могу отключить V-Sync\n");
...

Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200517:15#29
resurected_timofei
>Сорри! =)
ничего страшного большой объем кода...ладно если будут идею скажи... я заметил 1 вешь у меня дублируются полигоны...:(
пробовал делать учет повторяющихся индексов получилось вмечто 5282 полигона около 500!!!
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200516:54#27
resurected_timofei
>Ну добавь еще ограничение по количеству треугольников.
>Разве сложно? Только удобнее построением будет управлять.
дак это я делаю:
//если число полигонов меньше чем нужно то это  является листом
	if (node -> GetNumberPoligons() <= OctreeNode::NUMBERPOLIGONS) {
		//становить флаг листа
		node -> SetLeaf();
...
}
	else//очистить полигоны
		node -> ClearPoligons();
Glut + MFC в VisualStudio6.026 мая 200516:47#1
Pa3DBaKp9IK
Видать может ресурсы не освобождаешь...проверь в деструкторы заходит к примеру... освободи все ресурсы  потом вызывай exit.
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200515:24#25
Keysall
>проверь на простейшей сцене, правльно ли расчитываются размеры боксов для нодов
это давно уже правильно... глюки все исправлены
>зачем тебе флаг лист или нет....
>если сделать дочерние ноды вектором, то соответственно сыновей может быть либо 0 либо 2 и.т.д.
>значит если их 0 то это лист
Ну впринципе я это упростил это одно и тоже будет. что я флаг имею или что ты возвращаешь size() или empty() при использовании std::vector...
>вопрос:
>какие у тебя критерии окончания рекурсии (при построянии дерева)
глубина разбиения больше заданной.
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200513:53#20
Sandman
>После построения октри у тебя становится больше примитивов
Почему больше?можешь поподробней объяснить?у меня подозрения либо неправильно статику не виду и  я так и не смог от дублирования избавится...
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200513:48#19
Keysall
Привет!!! как давно с тобой не общались!!!
>. алгоритм проверки 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 мая 200513:26#16
dark
да блин из этого следует надо перделать для начала организацию и отрисовку Mesh'а...
Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200512:11#14
resurected_timofei
gvm
так отсекал треугольники я изначально до Octree...
Посмотрите пост 7.... там я писал про это...
в общем в моей тестовой программе есть отключенияпроверки отсечения каждого треугольника.

Иными словами я сравниваю рендеринг сцены без оптимизации и рендер с помощью Octree-дерева
и там и тпм равные условия: т.е. может Выключено/Включено отсечение трекгольников
эффект такой-же

Вопрос почему медленнее при рендере через Octree?

Рендер через Octree-дерева:FPS низок по сравнению с прямым рендером.Прошу помощи.26 мая 200510:50#11
slava_mib
Спасибо мне уже про это говорили давно...ясно в общем надо пересматривать организацию Mesh'а...
Кто нибудь ответит почему при равных условиях а именно и там и там по 1 треугольнику через Octree скорость у меня меньше?

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

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