Сообщения на форуме пользователя Andrey (148 стр.)
Тангент и бинормаль | 19 фев. 2007 | 10:48 | #1 |
---|
а как она не так работает? И стоит ли вообще считать ее в экспортере? я вот тоже на выходных подошел к этой проблеме. Дело в том что дополнительно разрастется данные в сохраняемом файле из-за экспортирования еще 2 векторов по 3 float для каждой вершины. Может это сделать в загрузчике движка, по требованию ведь не всем мешам в сцене нужен бамп.
Ну ты можешь свою функцию применить для подсчета. Полазь по форуму или по сети много готового есть. Если не найдешь дам ссылку или напишу.
Материалы | 19 фев. 2007 | 10:45 | #3 |
---|
хм тогда не пойму причем тут материалы? если проблема в сохранении Tga? попробуй бибилиотеку DevIL вот статью как-то написал: http://www.gamedev.ru/articles/?id=70123
она вроде должна сохранить так как тебе надо, если не разберешься сам т.к. материал в статье самые основы, могу помочь.
Опрос (комментарии) | 19 фев. 2007 | 10:42 | #12 |
---|
>Просто если по умолчанию экспортировать то текстурные координаты съезжают. Хотя я пробовал на 1 модели.
>Подробнее плиз.
Итак была у меня модель замка 5282 полигона и 13 материалов. Если экспортировать все как есть то текстурные координаты съезжают
пришлось применить тот код что я постил в посте 6 в это случае все нормально. Беру другую модель у той опять съезжают.
>После мастабирования текстурные координаты меняются
хм неужели это дело в масштабировании?
>X-Form
а что это такое?
Опрос (комментарии) | 16 фев. 2007 | 19:06 | #10 |
---|
Давно еще я писал плагин здорово мне помог 1 человек он мне помог в паре строчек связанных с этим. :(
Просто если по умолчанию экспортировать то текстурные координаты съезжают. Хотя я пробовал на 1 модели.
проблема с загрузой ВМП в DevIL | 16 фев. 2007 | 13:41 | #3 |
---|
>Так ТГА грузится нормально, БМП синий выхолит.
даже после вставки
int format = ilGetInteger(IL_IMAGE_FORMAT); if(format == IL_BGR || format == IL_BGRA) iluSwapColours();
проблема с загрузой ВМП в DevIL | 16 фев. 2007 | 12:56 | #1 |
---|
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); }
Помогите разобраться с форматом JPEG. | 15 фев. 2007 | 13:04 | #3 |
---|
Опрос (комментарии) | 15 фев. 2007 | 10:59 | #7 |
---|
Ну и?
рендеринг ландшафта. подскажите пути оптимизации. | 14 фев. 2007 | 19:25 | #6 |
---|
>то тут аккуратно сообщили, что размер 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 фев. 2007 | 19:01 | #12 |
---|
рендеринг ландшафта. подскажите пути оптимизации. | 14 фев. 2007 | 10:53 | #1 |
---|
итак если не ошибаюсь твой ландшафт не отрендерится на карте к примеру Radeon 9600.
первой что нужно сделать разбить его на QuadTree.
Далее делаешь уровень ландшафта. Самый простой и эффективный способ это Chucked Lod - принцип основан на подмене индексного буфера через который для каждого листа дерева рендерится соответствующие уровню лода число полигонов.
>зы второй вопрос - делаю погодные явления - юзаю частицы. выпадают "осадки" в 100 000 частиц, FPS падает с 200 до 120 (((
>их тоже надо ведь оптимизировать чтобы не рендерились те которые не видны в данный момент.
не знаю как каждую частицу отсекать и врядли это эффективно. Можно делать ограничивающий AABB для частиц и отсекать его по frustum. Ты используешь точечные спрайты? Лучше руками рендери частицу как 2 полигона, с помощью анимированной текстуры можно уменьшить число частиц.
Кто чем выделяет память? | 14 фев. 2007 | 10:43 | #16 |
---|
>вообще-то "лучше" - нету, каждый для своих целей.
>VirtualAlloc - тонкое управление памятью процесса сверхбольшими блоками. Про него уже даже не совсем верно "выделяет", >скорее он "размечает" память :]
>HeapAlloc - средство операционной системы для ежедневного выделения памяти неопределённого размера
>malloc - средство С для для ежедневного выделения памяти неопределённого размера
>operator new - средство С++ для для ежедневного выделения памяти выделения памяти неопределённого размера и создания >объектов. Массивы лучше создавать на std::vector, объекты после new класть в умные указатели (std::auto_ptr / >boost::shared_ptr и тп)
>_alloca и создание объектов на стеке - быстрое выделение памяти на время жизни функции.
Идеально исчерпывающий ответ Всем смотреть сюда.
Нафик нужен свой движок??? | 14 фев. 2007 | 10:33 | #44 |
---|
зацените демку | 13 фев. 2007 | 17:32 | #63 |
---|
>открываем файл terrain_vs.glsl
>комментируем строку gl_ClipVertex = gl_ModelViewMatrix * vec4( gl_Vertex.xyz, 1.0 );
>смотрим демку с нормальным фпс.
да все круто работает на Radeon 9600