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

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

Время расчета скелетной анимации.5 апр. 201210:26#1
Vorotnyak_Nazar
Я бы QPC использовал все таки он точнее.
Криво интерполируются нормали в шейдере5 апр. 201210:23#22
ArchiDevil
> D3DXMatrixPerspectiveFovRH(
> mProj,
> (float)D3DX_PI * _FOV / 180,
> _screenWidth / _screenHeight,
> _zNear,
> _zFar);
>
Сомнительно не на всякий случай напишу, если _screenWidth и _screenHeight не float, то  следует сделать так:
D3DXMatrixPerspectiveFovRH(
  mProj,
  (float)D3DX_PI * _FOV / 180,
  static_cast<float>(_screenWidth) / _screenHeight,
  _zNear,
  _zFar);

Kernel-mode драйвер. Как прочитать данные с девайса?4 апр. 201217:04#14
.L
>RtlMoveMemory
а memove разве нельзя, как интристика быстрее может будет.
Косметика на OpenGL4 апр. 20129:44#1
Levelup
> Может есть идеи по алгоритму в целом? Мне кажется, что без адских циклов тут
> не обойтись...
Если тебе производительность не важна то залочь текстуру и сделай реализацию на CPU
glBlendFuncSeparate вылетает на OpenGL ES 2.03 апр. 201211:45#21
MRS
>java не понимает. Функции красным подчеркивает :(
убогий недоязык...
>>innuendo
>> подозрения падают на стык java + gles
>Есть ли идеи как можно обойти?
>хм... Может мой телефон не поддерживает какое-то нужное расширение?
напиши функцию на C++ для проверки assert что я написал в 9 посте. Или как-то в логе/отладке попробуй на java проверить что функция имеет не нулевой указатель, я не в курсах как на этом отстое это делать. Расширения по ходу дела тут не причем. Судя по списку расширений(GL_OES_get_program_binary и т.д. ) твой аппарат частично держит OpenGL 3.0 и точно по идее должен держать glBlendFuncSeparate.
И еще упрости код оставь только инициализации через EGL, и отрисовку:
glClear(...);
glBlendFuncSeparate(...);
eglSwapBuffers(...);
если тут вылетает проблема в драйвере или в глючном java c вызовами gles
OpenGL vs Direct3D28 мар. 201218:04#350
Ну давайте продолжим OpenGL vs Direct3D, а то уклонились от темы.
glBlendFuncSeparate вылетает на OpenGL ES 2.026 мар. 201220:42#9
MRS
assert(glBlendFuncSeparate && "NULL Pointer")
assert(glBlendEquation  && "NULL Pointer")
assert(glBlendEquationSeparate&& "NULL Pointer")
Если assert срабатывает. Нету инициализации адресов функции. Если адрес валидный, значит ошибка в драйвере
VBO glVertexPointer26 мар. 201220:35#49
innuendo
судя по времени выполнения мне кажется это просто сохранение текущего id внутри реализации драйвера.
glBlendFuncSeparate вылетает на OpenGL ES 2.026 мар. 201218:32#3
MRS
>glBlendFunc работает хорошо.
естественно...
>Читал что в OpenGL 2.0 эта функция встроена.
OpenGL ES 2.0 и OpenGL 2.0 всего лишь похожи по синтаксису. Но это не значит что порт с PC пойдет сразу на мобильную платформу и наоборот. Читай спецификацию по OpenGL ES 2.0, возможно нету там такого расширения либо его нужно инициализировать отдельно, чего наверное ты и не сделал.
VBO glVertexPointer26 мар. 201218:24#47
innuendo
> я так понимаю -  и отвязка после вызова glDraw ?
ну вряд ли. зачем отвязывать буфер ? поставится новый, отвяжется старый.
RPG
> И как, намного VAO быстрее VBO?
ну если у тебя много установок поинтеров то считай для стандартной вершины normal + texcoord + vertex экономишь 6 вызовов(3 glVertexAttribPointer и 3 glEnableVertexAttribArray)
OpenGL vs Direct3D22 мар. 201211:31#272
SNVampyre
> Чем тебе не нравится 90FPS?
DIP много, Сцена слабая в кадре меньше десяти объектов.
>Каждый инстанс считаю за батч, дипов там порядка сотни.
Кусты за 10 dip максимум все можно все вывести.
а вот тебе и твои порядка сотни DIP:

Изображение

BATCH11274 я так понимаю это "порядка сотни"? или я неправильно понял? наверняка это подсчет glDrawArrays,glDrawElements
Вот с  тенями, тут вообще 15000, кстати глючат они, это пожалуй единственное что бросается в глаза. А так картинка красивая но арт подкачал, ну тут не твоя вина.
Кстати вывел бы число поликов в кадре. я думаю там 50000 не больше, заодно число установленных буферов, шейдеров текстур рендер таргетов.

Изображение


Если ты добавишь им анимацию то подсядет еще FPS, т.е. нормальной организации сцены у тебя никакой нету. Далее, отключаю анизотропку(так -же смотрю на пол как на первом скрине) FPS растет до 120. Ну все правильно любуемся анизотропной фильтрацией для всех дальних объектов для которых она нафиг не нужна. Итого пиксельный конвейер у тебя загружен по самое нибалуйся из-за отсутствия опыта проектирования движков, далее постпроцесс и тени убивают производительность до 20 FPS....
Кстати чего грузится твоя сцена так долго? переборщил c STL и частыми выделениями памяти? неэффективный формат моделей/загрузчик? зачем тебе там std::string кстати?
Ну как и большинство графических программистов бьющих в грудь и кричащих о совершенном АПИ, нарисуют грубо говоря кубик на сцене с шейдерами и эффектами. Причем причем больше постпроцесса воткнуть ибо большинство этих эффектов это проще сделать(ну с dof там понятно чуток сложнее) и сразу дает красивую картинку.
Серьезную загруженную сложную сцену я еще ни у кого не видел.
>как это влияет на зависания рейдж?
>но игра работает стабильно на всём железе, которое поддерживает OpenGL 3.2, и
Это будет стабильно работать неужели не понятно?
>используются все те же технологии, которые используются в рейдж (UBO, TBO, geometry_shaders, >instancing, texture_rg, float/int, texture_arrays, множественная линковка и т.д. и т.п.).
Ты используешь UBO не для всех шейдеров есть glUniform* и в 1 шейдере видел UBO блок.
>Что виснет у кармака и почему по глючному рейджу делают выводы об OpenGL?
А теперь при твоем подходе загрузи сцену уровня Rage в свой движок и догадайся что будет дальше.
У тебя 1 поток, нету стриминга данных, нету большого числа сложных объектов. Код проще, объем данных меньше меньше комбинаций вызовов к ядрам CPU дисковой системе оперативной памяти, видеокарте т.е. грубо что то типа этого: поток1->синхронизация...->потокn/ RAM/VRAM/CPU1/CPU2/OpenGL Call и т.д.

У тебя используется современный OpenGL в коде Rage ест еще устаревшие функции, т.е. зайдействована комбинация старого кода и нового.
К примеру там есть хлам glColor4f, glShadeModel  у тебя этого нету. Ну и в Rage есть wglShareList, это говорит уже о многопоточной работе с OpenGL надеюсь, ты понимаешь что Rage'у d разы проще снести крышу графическим дровам.

Кстати музыка классная, и да, OpenAL работает естественно.

Мое мнение виноваты дрова от AMD. Но их поправили я думаю на ATI 5670 пойдет нормально.

OpenGL vs Direct3D22 мар. 20120:13#227
SNVampyre
Изображение

По поводу твоего проекта сравниваемого с Rage, значит отключаю все эффекты оставляю только анизотропку.
Смотрю в пол. В кадре 3 куста, 2 полика  ландшафта и машинка. Получаю 90 FPS на ATI 5670. Объясни мне как ты умудрился так движок написать что он тормозит на такой сцене и да еще 600 DIP в кадре!!! И ты это сравниваешь с уровнем Rage ??

Если не в пол смотреть там вообще за 10000 DIP переваливает. Ты по 1 кустику риcуешь ?

Где на твое примитивнейшей сцене. лям геометрии в кадре, скелетная анимация, сложные сцены частиц, огромный ландшафт с эффективным стриммингом с диска, сотни мегабайт текстур, тысячи объектов  в кадре анимация деревьев, травы ???
Твоя сцена это кубик с сложным освещением и пост эффектами. Тут все кравиво, не спорю. Но это кубик! и это врядли где будет бажить OpenGL.
Zefick
+100 за 183 пост.

OpenGL VBO glDrawElements со смещением20 мар. 201211:36#1
pozitiffcat
glDrawElements(GL_TRIANGLE_LIST, 6, GL_UNSIGNED_SHORT,  0);
..
glDrawElements(GL_TRIANGLE_LIST, 6, GL_UNSIGNED_SHORT,  sizeof(unsigned short) * 6);
..
glDrawElements(GL_TRIANGLE_LIST, 6, GL_UNSIGNED_SHORT,   sizeof(unsigned short) * 12);
..
glDrawElements(GL_TRIANGLE_LIST, 6, GL_UNSIGNED_SHORT,   sizeof(unsigned short) * 18);
Разбор Id Tech 4, Doom 3 Source20 мар. 201211:32#229
arabesc
>чем лучше? когда будет удалён d3dDevice?
Меньше дерганий для выделения памяти, к тому-же обработка исключения от bad_alloc, фрагментация и т.д., проще код.
Для удаления зовем ему некий написанный метод D3DDevice->Release(); или нечто подобное в конце работы.

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

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