Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Проекты > Проекты C++

Ответ
 
Опции темы
Старый 13.07.2012, 15:33   #151
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
HolyDel
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Поднял на 20% FPS - это без Frustum. Запилил тач в андроиде. Сделал нормальный шрифт.
Осталось, нормальный фрустум, конвертирование текстур прям при экспорте из макса. Проверить оптимизации, сделать нормальную доку, вытащить все в DLL, мастер для Eclipse, Visual Studio, и можно будет пощупать.
После этого собираюсь запилить наконец-то тени, point и spot освещение, пока не решил per-vertex или per-pixel
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (16.07.2012)
Старый 16.07.2012, 17:11   #155
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: C3D Engine

Освещение ведь на шейдерах, делай оба варианта. С возможностью переключения.
Ведь если делать толково, то deferred, а там да, пиксельное сразу лучше.
(Offline)
 
Ответить с цитированием
Старый 16.07.2012, 18:09   #156
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

Поднял на 20% FPS
каким образом? если не секрет ))
(Offline)
 
Ответить с цитированием
Старый 16.07.2012, 19:39   #157
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

один раз за кадр множу projection matrix и view matrix, в шейдер передается modelMatrix и viewprojMatrix, и множится в шейдере. Раньше у каждого объекта вычислялась modelview матрица ну и анимацию вынес в ГПУ
(Offline)
 
Ответить с цитированием
Старый 16.07.2012, 20:54   #158
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: C3D Engine

Неплохо!
(Offline)
 
Ответить с цитированием
Старый 16.07.2012, 20:59   #159
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

непробывал множить матрицы на цпу, а в шейдере не множить матрицы вообще? этож мобилка, там немного шейдерных процессоров.
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 09:13   #160
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

гпу всегда быстрее цпу. Тем более прирост на лицо
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 12:07   #161
jimon
 
Сообщений: n/a
Ответ: C3D Engine

Сообщение от pozitiffcat Посмотреть сообщение
гпу всегда быстрее цпу. Тем более прирост на лицо
на мобильниках зачастую скелетка быстрее на цпу + neon, чем на гпу, потому что гпу крутится на низких частотах (~100-400 мгц) и у него всего 2-4 ядра, когда цпу под 1+ ггц работает

ps. еще memcpy через neon быстрее чем обычный
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pozitiffcat (17.07.2012)
Старый 17.07.2012, 12:10   #162
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

Тем более прирост на лицо
т.е. я правильно понимаю, что считать одну матрицу на цпу, и передавать ее на объект дороже чем передавать две матрицы на объект и считать их на мобильном гпу для КАЖДОЙ вершины?
(Offline)
 
Ответить с цитированием
Старый 17.07.2012, 13:06   #163
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 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
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: C3D Engine

Добавил файловые системы - дисковую и zip
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (17.07.2012)
Старый 17.07.2012, 20:06   #165
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: C3D Engine

файлы советую сделать подмапленными. где тут была статья джимона. дает прирост в 15% по скорости. + ненадо создавать буфера.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 18:53.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com