forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   странность скорости отрисовки opengl (http://forum.boolean.name/showthread.php?t=17566)

pozitiffcat 25.11.2012 23:33

странность скорости отрисовки opengl
 
Раньше у меня каждый объект хранил 2 vbo, для вершин и индексов. Сделал 2 общих vbo на все объекты, при отрисовки просто буффер оффсетится, так скорость упала на 10-20% что за фигня? Где логика...

HolyDel 26.11.2012 02:47

Ответ: странность скорости отрисовки opengl
 
на каких платформах наблюдается такое поведение?

pax 26.11.2012 14:54

Ответ: странность скорости отрисовки opengl
 
А сколько раз делаешь SetBuffer?

HolyDel 26.11.2012 16:06

Ответ: странность скорости отрисовки opengl
 
Цитата:

А сколько раз делаешь SetBuffer?
загоняет данные очевидно сколько моделей раз.

вообще по идее техника должна давать буст. может просаживается в каких-то смежных местах.

pax 26.11.2012 16:21

Ответ: странность скорости отрисовки opengl
 
Я как-то на Unity генерил меш из субмешей. Субмеши имели разные материалы. И вот из-за разных материалов в статистике было вершин больше во столько раз, сколько было этих материалов. Т.е. Unity ставила вершинный буфер например 3 раза для трех материалов. В результате вершин было в статистике х 3.

SBJoker 26.11.2012 16:23

Ответ: странность скорости отрисовки opengl
 
Ну это нормально, любой меш режется по материалам, насколько я знаю нельзя сразу вывести несколько материалов.

HolyDel 26.11.2012 18:35

Ответ: странность скорости отрисовки opengl
 
просто брать данные для вершин для каждого меша можно либо из отдельного вершинного буфера, либо с общего вершинного буфера, просто указывая начало. техника должна давать буст. она же дает тормоза. мне тоже интересно почему.

Цитата:

Т.е. Unity ставила вершинный буфер например 3 раза для трех материалов.
я тоже думал о такой оптимизации (ли?).
суть такова: под каждый набор vertex attribs ставится генерится свой вершинный буфер, чтобы данные в нем располагались как можно плотнее.
Но потом меня напугало большое число ВБО, большое число лишней информации и менеджмент ее. Возможно введу такую оптимизацию (ли?) для позиций. Т.е. 2 ВБО - в одном все. Во втором только позиции. Второй нужен для рендеринга в z early pass или для рендеринга в текстуру глубины (для теней например).

jimon 26.11.2012 19:06

Ответ: странность скорости отрисовки opengl
 
Цитата:

Сообщение от HolyDel (Сообщение 244859)
просто брать данные для вершин для каждого меша можно либо из отдельного вершинного буфера, либо с общего вершинного буфера, просто указывая начало. техника должна давать буст. она же дает тормоза. мне тоже интересно почему.


я тоже думал о такой оптимизации (ли?).
суть такова: под каждый набор vertex attribs ставится генерится свой вершинный буфер, чтобы данные в нем располагались как можно плотнее.
Но потом меня напугало большое число ВБО, большое число лишней информации и менеджмент ее. Возможно введу такую оптимизацию (ли?) для позиций. Т.е. 2 ВБО - в одном все. Во втором только позиции. Второй нужен для рендеринга в z early pass или для рендеринга в текстуру глубины (для теней например).

какой смысл в плотности если ты их один раз загоняешь в vram ? надо чтобы в линейки кеша попадало, а они 32 байтовые зачастую

HolyDel 26.11.2012 19:25

Ответ: странность скорости отрисовки opengl
 
Цитата:

какой смысл в плотности если ты их один раз загоняешь в vram ?
допустим тебе нужны только позиции.
в общем случае, кроме позиций есть еще нормаль, тангент и пара текстурных координат.
весь кусок памяти для такого случая будет в 3 раза больше, чем чисто позиции. мне кажется, что с в три раза меньшего куска моделька отрисуется быстрее. но надо проверять.

pozitiffcat 26.11.2012 21:30

Ответ: странность скорости отрисовки opengl
 
Цитата:

Сообщение от HolyDel (Сообщение 244812)
на каких платформах наблюдается такое поведение?

там хрень какаято скорость отрисовки растет а фпс нет.. странность короче, буду копаться, походу opengl что то мудрит из-за какогонибудь флага

pax 26.11.2012 21:38

Ответ: странность скорости отрисовки opengl
 
На телефонах ограничение FPS, на iOS вроде 30, на андроедах 60.

SBJoker 26.11.2012 21:44

Ответ: странность скорости отрисовки opengl
 
на iOS у всех 60, наверное тока у юнити 30.

HolyDel 26.11.2012 22:10

Ответ: странность скорости отрисовки opengl
 
Цитата:

там хрень какаято скорость отрисовки растет а фпс нет..
может ошибки в расчете фпс?

pozitiffcat 26.11.2012 23:00

Ответ: странность скорости отрисовки opengl
 
нет, мерял аналогичным методом, как и время рендера. Время рендера уменьшается а фпс такой же.. как то в голове не укладывается почему так, гдето читал что это из-за энергосбережения...

pozitiffcat 06.12.2012 00:47

Ответ: странность скорости отрисовки opengl
 
Путем ковыряний пришел к выводу, что glbindbuffer ничего не стоит, и нет смысла хранить кучу объектов в одном vbo. разве что для оптимизации дипа.
Очень сильно кушает время дип. gldrawelements. Как тут можно оптимизировать? Если куча разношерстных объектов с разными материалами, получается никак? Впринципе я добился достойного фпс на говеном железе, это поднял с 15 до 51 на adreno 200, но хочется большего. У кого какие соображения??


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot