GlClear вызывает проблемы в соответствии с инструментами? (OpenGL ES на iPhone) - PullRequest
0 голосов
/ 17 ноября 2010

В последнее время я замечал, что в моей игре иногда возникают проблемы с производительностью, когда каждый кадр занимает намного больше времени, чем нужно для завершения.Я подключил его к CPU Sampler в Instruments и обнаружил кое-что довольно странное (думаю, я впервые использую CPU Sampler, поэтому я не понимаю всего этого).

glClear, по-видимому, занимает безумное количество процессорного времени (в настоящее время он равен 36% и постоянно растет).Это довольно трудоемкая игра, поэтому ни один вызов glClear не должен занимать так много времени.

glClearColor(backgroundcolor[0], backgroundcolor[1], backgroundcolor[2], 1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

Вызывается только один раз за кадр.У меня нет активного буфера трафарета, так что это не проблема.Одна вещь, которая может быть проблематичной, заключается в том, что моя игра позволяет вам двигаться практически так далеко, как вы хотите, в любом направлении, а это означает, что ваше местоположение по осям X и Y может очень далеко от начала координат.Попытается ли glClear очистить весь покрытый ландшафт или только размеры экрана?И если это не проблема, то кто-нибудь знает, почему это так дорого на моем процессоре?

1 Ответ

0 голосов
/ 18 января 2011

glClear ожидает завершения остальных команд (что, afaik на iOS означает vsync?).

Если вы

glFlush (); glFinish ();

в конце рендеринга вы увидите, как много времени, проведенного в glClear, переходит на glFinish.

...