Opengl-es вызывает onDrawFrame вручную

Я создаю игровой цикл, и мне нужно иметь возможность вызывать onDrawFrame (изнутри средства визуализации вручную), чтобы «пропускать кадры», если я обнаружу, что отстаю от процессов.

В настоящее время у меня есть класс GLSurfaceView, который вызывает

setRenderer(glSurfaceRenderer);

С этой настройкой я понимаю, что onDrawFrame вызывается каждый тик.

Я попытался поместить вышеуказанный вызов в метод, чтобы я мог вызывать его из своего игрового цикла, но при втором запуске игрового цикла я вылетаю с сообщением

setRenderer has already been called for this instance

Есть ли способ вызывать рендерер вручную каждый кадр?

Будет просто звонить

onDrawFrame

метод работает исправно. Или не рекомендуется таким образом управлять визуализатором при использовании openGL?


person Jack    schedule 14.09.2011    source источник


Ответы (1)


Я не понимаю, как вызов setRenderer() или вызов onDrawFrame() вручную в игровом цикле что-то решит. Вы должны реорганизовать свои вызовы рендеринга, чтобы принять во внимание время, необходимое для рисования, другими словами, анимацию, основанную на времени. В любом случае вызов onDrawFrame() вручную без вызова eglMakeCurrent() перед любыми вызовами отрисовки не будет работать, так как у вас есть отрисовка нитей рендерера и игрового цикла.

Редактировать: поскольку вы используете GLSurfaceView, вы можете вызвать requestRender() из своего игрового цикла, чтобы запустить рендеринг, если вы чувствуете, что RENDERMODE_CONTINUOUSLY слишком медленный для вас.

person Jasoneer    schedule 14.09.2011
comment
Я уже сделал игровой цикл, основанный на времени (извините, я не указал это, я должен был это сделать), мне нужен способ убедиться, что рендерер рисует, когда ему говорят. - person Jack; 15.09.2011
comment
Если рендерер работает медленно, то вы ничего не можете с этим поделать, не добавляя к нему дополнительное оборудование. - person Jasoneer; 15.09.2011
comment
Это совсем не то, что я имею в виду: / учебник, который я использую, находится [против зерна] (obivam.net/index.php/the-android-game-loop), единственная проблема в том, что учебник использует холст, а не GL - person Jack; 15.09.2011
comment
Ах, фантастика, я думаю, это должно сработать, я проверю это позже. Спасибо :) - person Jack; 15.09.2011