|
13.07.2012, 15:33
|
#151
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Сначала думал, что есть отличия GL/ES, вот и написал интерфейс, можно директ запилить когда нечего делать будет, но для этого надо уходить от GL синтаксиса, более абстрактно сделать класс, у меня и окошки работают на freeGlut, SDL, Android API.. на любой вкус. Хотя SDL можно выпилить, у меня freeGlut, норм работает, компилится с сорцов без либ.
Я не ищу сложных путей, по фозможности использую проверенные временем библиотеки. Юзать freeimage не стал за не надобностью, раз есть свой формат моделей, так пусть будет свой формат текстур, накрайняк можно будет потом хранить текстуры прямо в моделях.. но это так на будущее.
|
(Offline)
|
|
13.07.2012, 15:56
|
#152
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
RENDER->bindBuffer(_vbo, BT_ARRAY);
RENDER->vertexAttribPointer(shader->getPositionAttrib(), 3, RENDER->oFLOAT(), RENDER->oFALSE(), sizeof(Vertex), (const void*)0);
if(shader->getNormalAttrib() != -1) RENDER->vertexAttribPointer(shader->getNormalAttrib(), 3, RENDER->oFLOAT(), RENDER->oFALSE(),sizeof(Vertex), (const void*)12);
if(shader->getTexcoordAttrib() != -1)RENDER->vertexAttribPointer(shader->getTexcoordAttrib(), 2, RENDER->oFLOAT(), RENDER->oFALSE(), sizeof(Vertex), (const void*)24);
RENDER->bindBuffer(_ibo, BT_ELEMENT);
RENDER->drawElements(RENDER->oTRIANGLES(), _icount, RENDER->oUNSIGNED_SHORT(), 0);
семь виртуальных вызовов на отрисовку вместо одного... такто спички, но всеж...
|
(Offline)
|
|
13.07.2012, 16:21
|
#153
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
при 60 fps, это мешать не будет, прирост будет 0.5 фпс если убрать интерфейс.
При 1000 фпс, различие может быть в 50 fps. но какая нам разница, если глаз не воспринимает 1000 фпс, можно ограничиться 100 фпс.
Зачем нам гнаться за этими 0.5 % прироста, оптимизировав код. Лучше реализовывать чувствительные к ГАПИ оптимизации.
PS. компиляторы давно научились сами оптимизировать подобный код.
|
(Offline)
|
|
16.07.2012, 16:35
|
#154
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Поднял на 20% FPS - это без Frustum. Запилил тач в андроиде. Сделал нормальный шрифт.
Осталось, нормальный фрустум, конвертирование текстур прям при экспорте из макса. Проверить оптимизации, сделать нормальную доку, вытащить все в DLL, мастер для Eclipse, Visual Studio, и можно будет пощупать.
После этого собираюсь запилить наконец-то тени, point и spot освещение, пока не решил per-vertex или per-pixel
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
16.07.2012, 17:11
|
#155
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: C3D Engine
Освещение ведь на шейдерах, делай оба варианта. С возможностью переключения.
Ведь если делать толково, то deferred, а там да, пиксельное сразу лучше.
|
(Offline)
|
|
16.07.2012, 18:09
|
#156
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
каким образом? если не секрет ))
|
(Offline)
|
|
16.07.2012, 19:39
|
#157
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
один раз за кадр множу projection matrix и view matrix, в шейдер передается modelMatrix и viewprojMatrix, и множится в шейдере. Раньше у каждого объекта вычислялась modelview матрица ну и анимацию вынес в ГПУ
|
(Offline)
|
|
16.07.2012, 20:54
|
#158
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: C3D Engine
Неплохо!
|
(Offline)
|
|
16.07.2012, 20:59
|
#159
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
непробывал множить матрицы на цпу, а в шейдере не множить матрицы вообще? этож мобилка, там немного шейдерных процессоров.
|
(Offline)
|
|
17.07.2012, 09:13
|
#160
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
гпу всегда быстрее цпу. Тем более прирост на лицо
|
(Offline)
|
|
17.07.2012, 12:07
|
#161
|
|
Ответ: C3D Engine
Сообщение от pozitiffcat
гпу всегда быстрее цпу. Тем более прирост на лицо
|
на мобильниках зачастую скелетка быстрее на цпу + neon, чем на гпу, потому что гпу крутится на низких частотах (~100-400 мгц) и у него всего 2-4 ядра, когда цпу под 1+ ггц работает
ps. еще memcpy через neon быстрее чем обычный
|
|
|
Сообщение было полезно следующим пользователям:
|
|
17.07.2012, 12:10
|
#162
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
Тем более прирост на лицо
|
т.е. я правильно понимаю, что считать одну матрицу на цпу, и передавать ее на объект дороже чем передавать две матрицы на объект и считать их на мобильном гпу для КАЖДОЙ вершины?
|
(Offline)
|
|
17.07.2012, 13:06
|
#163
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Ну у меня прирост в производительности дало на гигогерцовом cortexA8 проце и на 600 мегагерцовом тоже.
PS. вершин у каждой модели в среднем 1000
Последний раз редактировалось pozitiffcat, 17.07.2012 в 14:36.
|
(Offline)
|
|
17.07.2012, 14:28
|
#164
|
Мастер
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений (для 533 пользователей)
|
Ответ: C3D Engine
Добавил файловые системы - дисковую и zip
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
17.07.2012, 20:06
|
#165
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: C3D Engine
файлы советую сделать подмапленными. где тут была статья джимона. дает прирост в 15% по скорости. + ненадо создавать буфера.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:13.
|