Я пытаюсь создать GLSurfaceView, который отображает карту игровой зоны. Когда игрок движется, игровая активность вызывает highlightSpot, что, в свою очередь, должно вызвать запрос рендеринга. Единственный раз, когда я хочу перерисовать вид, это когда игрок двигается.
Однако, с моей текущей реализацией, несмотря на вызов setRenderMode(RENDERMODE_WHEN_DIRTY)
для моего GLSurfaceView, его режим рендеринга все еще кажется непрерывным. Чтобы проверить, я бросил один оператор println в свой метод onDrawFrame, и когда я запускаю свое приложение, вывод быстро заполняет мой logcat, при этом игрок не перемещается ни разу - он явно не ведет себя так, как я планировал. Есть ли что-то еще, что мне нужно сделать, чтобы представление отображалось только по запросу?
(Основная часть этого кода получена из учебных пособий по адресу http://insanitydesign.com/wp/projects/nehe-android-ports/.. Для краткости я опустил методы onDrawFrame, OnSurfaceChanged и onSurfaceCreated, поскольку я не изменяю режим рендеринга и не запрашиваю рендеринг в любом месте в тех методах. Если кто-то считает, что это может быть уместно, я тоже могу опубликовать их.)
public class SurfaceViewClass extends GLSurfaceView implements Renderer {
public SurfaceViewClass(Context context) {
super(context);
...
this.setRenderer(this);
this.setRenderMode(RENDERMODE_WHEN_DIRTY);
}
public void highlightSpot(int x, int y) {
/* change some variables here */
...
this.requestRender();
}
}