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

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

Тангент и бинормаль19 фев. 200710:48#1
mrX
а как она не так работает? И стоит  ли вообще считать ее в экспортере? я вот тоже на выходных подошел к этой проблеме. Дело в том что дополнительно разрастется данные в сохраняемом файле из-за экспортирования еще 2 векторов по 3 float для каждой вершины. Может это сделать в загрузчике движка, по требованию ведь не всем мешам в сцене нужен бамп.
Ну ты можешь свою функцию применить для подсчета. Полазь по форуму или по сети много готового есть. Если не найдешь дам ссылку или напишу.
Материалы19 фев. 200710:45#3
mrX
хм тогда не пойму причем тут материалы? если проблема в сохранении Tga? попробуй бибилиотеку DevIL вот статью как-то написал: http://www.gamedev.ru/articles/?id=70123
она вроде должна сохранить так как тебе надо, если не разберешься сам т.к. материал в статье самые основы, могу помочь.
Опрос (комментарии)19 фев. 200710:42#12
mrX
>Просто если по умолчанию экспортировать то текстурные координаты съезжают. Хотя я пробовал на 1 модели.
>Подробнее плиз.
Итак была у меня модель замка 5282 полигона и 13 материалов. Если экспортировать все как есть то текстурные координаты съезжают
пришлось применить тот код что я постил в посте 6 в это случае все нормально. Беру другую модель у той  опять съезжают.
>После мастабирования текстурные координаты меняются
хм неужели это дело в масштабировании?
>X-Form
а что это такое?
Материалы16 фев. 200719:06#1
mrX
Дать код?
Опрос (комментарии)16 фев. 200719:06#10
mrX
Давно еще я писал плагин здорово мне помог 1 человек он мне помог в паре строчек связанных с этим. :(
Просто если по умолчанию экспортировать то текстурные координаты съезжают. Хотя я пробовал на 1 модели.
проблема с загрузой ВМП в DevIL16 фев. 200713:41#3
Monax-At
>Так ТГА грузится нормально, БМП синий выхолит.
даже после вставки
int format = ilGetInteger(IL_IMAGE_FORMAT);
if(format == IL_BGR || format == IL_BGRA)
  iluSwapColours();
?
проблема с загрузой ВМП в DevIL16 фев. 200712:56#1
Monax-At
http://www.gamedev.ru/site/forum/?id=10614&page=4
пост 48
void Load_Image(int Type,GLuint Image_Array[],GLuint Index,char* File_Name)
{
  switch(Type)
  {
    case 1:
      {
//Sourse code Loading BMP

      ilLoad(IL_BMP,(const ILstring)File_Name);
      int load_error = ilGetError();

              if(load_error != IL_NO_ERROR)
        {
              PostQuitMessage(0);
        }

      int width = ilGetInteger(IL_IMAGE_WIDTH);
      int height = ilGetInteger(IL_IMAGE_HEIGHT);
      int bpp = ilGetInteger(IL_IMAGE_BYTES_PER_PIXEL);
      int size = width*height*bpp;
int format = ilGetInteger(IL_IMAGE_FORMAT);
if(format == IL_BGR || format == IL_BGRA)
  iluSwapColours();

        //GLubyte* data = new GLubyte[size]; Утечка памяти...
GLubyte* data = ilGetData();
   
        unsigned int type = 0;

      switch(bpp)
      {
        case 1:
        type = GL_RGB8;
        break;
        case 3:
        type = GL_RGB;
        break;
        case 4:
        type = GL_RGBA;
        break;
        default: break;
      }
   
      glGenTextures(1,&Index);
      glBindTexture(GL_TEXTURE_2D,Image_Array[Index]);
      // Aee?iee e aaeuiee oeiu oeeuo?aoee(naea?eaaiea)
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
      glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
      gluBuild2DMipmaps(GL_TEXTURE_2D, bpp, width, height, type,
                    GL_UNSIGNED_BYTE, data);
      } 
Опрос (комментарии)15 фев. 200710:59#7
mrX
Ну и?
рендеринг ландшафта. подскажите пути оптимизации.14 фев. 200719:25#6
dave
>то тут аккуратно сообщили, что размер VB слишком велик.
да не размер VB а скорей всего число вершин/примитивов передаваемых в видеокарту. Размер VB ограничивается видео памятью. Тебде надо его рендерить по частям. тогда все ок будет.
progman
>>Можно делать ограничивающий AABB для частиц и отсекать его по frustum
>как это реализовать?
AABB это ограничивающий Box. во время цикла обновления частиц ищещь самую максимальную/ минимальную координату x,y,z - это будет Max/Min точки AABB. Если это сложно то втыкай сюда:
HRESULT D3DXComputeBoundingBox(
  CONST D3DXVECTOR3 * pFirstPosition,
  DWORD NumVertices,
  DWORD dwStride,
  D3DXVECTOR3 * pMin,
  D3DXVECTOR3 * pMax
);

>Далее делаешь уровень ландшафта. Самый простой и эффективный способ это Chucked Lod - принцип основан на подмене >индексного буфера через который для >каждого листа дерева рендерится соответствующие уровню лода число полигонов.
>про это можно как нить поподробнее?

допустим лист размеров 4x4 содержит ндескный буфер для 8 полигонов если расстояние от его центра больше чем нужно то подсовываем другой индексный буфер у которого будет всего 2 полигона
выглядет это так:
без лода:
Изображение удалено
Изображение удалено
с лодом
Изображение удалено
Изображение удалено
в общем по изображению сетки понятно что должно получится ты на этапе построения дерева должен для каждого листа менять индексные буферы. при рендеринге в зависимости от выбранного лода нужно подсовывать свой IB. Еще нужно не забывать про щели между сменами лодов. тут 2 пути либо стягивать дополнительными полигонами либо делать морфинг вершин.

Невидимые полигоны14 фев. 200719:01#12
serj
я облегчу твои поиски ;)
http://www.codesampler.com/dx9src/dx9src_7.htm#dx9_occlusion_query
рендеринг ландшафта. подскажите пути оптимизации.14 фев. 200710:53#1
progman
итак если не ошибаюсь твой ландшафт не отрендерится на карте к примеру Radeon 9600.
первой что нужно сделать разбить его на QuadTree.
Далее делаешь уровень ландшафта. Самый простой и эффективный способ это Chucked Lod - принцип основан на подмене индексного буфера через который для каждого листа дерева рендерится соответствующие уровню лода число полигонов.
>зы второй вопрос - делаю погодные явления - юзаю частицы. выпадают "осадки" в 100 000 частиц, FPS падает с 200 до 120 (((
>их тоже надо ведь оптимизировать чтобы не рендерились те которые не видны в данный момент.
не знаю как каждую частицу отсекать и врядли это эффективно. Можно делать ограничивающий AABB для частиц и отсекать его по frustum. Ты используешь точечные спрайты? Лучше руками рендери частицу как 2 полигона, с помощью анимированной текстуры можно уменьшить число частиц.
Кто чем выделяет память?14 фев. 200710:43#16
_Winnie
>вообще-то "лучше" - нету, каждый для своих целей.
>VirtualAlloc - тонкое управление памятью процесса сверхбольшими блоками. Про него уже даже не совсем верно "выделяет", >скорее он "размечает" память :]
>HeapAlloc - средство операционной системы для ежедневного выделения памяти неопределённого размера
>malloc - средство С для для ежедневного выделения памяти неопределённого размера
>operator new - средство С++ для для ежедневного выделения памяти выделения памяти неопределённого размера и создания >объектов. Массивы лучше создавать на std::vector, объекты после new класть в умные указатели (std::auto_ptr / >boost::shared_ptr и тп)

>_alloca и создание объектов на стеке - быстрое выделение памяти на время жизни функции.

Идеально исчерпывающий ответ Всем смотреть сюда.

Нафик нужен свой движок???14 фев. 200710:33#44
В целях повышения профессионального опыта стоит написать свой движок, не ставя целью сделать его профессиональным, а научится программировать предметную область 3D игр. Думаю такой опыт будет не бесполезен.
зацените демку13 фев. 200717:32#63
NULL_PTR
>открываем файл terrain_vs.glsl
>комментируем строку gl_ClipVertex = gl_ModelViewMatrix * vec4( gl_Vertex.xyz, 1.0 );

>смотрим демку с нормальным фпс.
да все круто работает на Radeon 9600

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

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