2012-07-01 2 views
1

В настоящее время я разрабатываю игру, в которой используется только 2D-графика.Перемещение с SurfaceView на GLSurfaceView?

В игре я широко использую андроид SurfaceView для отображения моей графики. Я слышал, что GLSurfaceView использует графику с аппаратным ускорением, и я могу увеличить производительность моего приложения, используя это вместо текущего SurfaceView.

В настоящее время у меня есть класс, расширяющий SurfaceView, который обновляет и визуализирует состояние игры, когда методы update() и render() вызываются мой собственный класс резьбы расширения Thread. Thread в основном помогает мне поддерживать почти постоянный FPS.

Теперь проблема: Как изменить от SurfaceView к GLSurfaceView и вызывать методы, чтобы обновить и сделать состояние игры с резьбой, по-прежнему иметь контроль над FPS. Я прочитал документацию по Android для OpenGL ES, и я не могу понять, как использовать GLSurfaceView.Renderer.

Если кто-то может объяснить, как я могу легко переключаться с SurfaceView на GLSurfaceView, это было бы очень полезно! Благодаря!

+0

Мне просто нужно знать, какие методы GLSurfaveView.Renderer или любого другого класса, должен ли я обновить состояние игры, и какой метод я должен использовать для визуализации состояния. У меня есть много возможностей, что я мог бы скопировать-вставить (и, вероятно, немного подружиться), поэтому я не хочу начинать все заново. – udiboy1209

ответ

1

Класс, который отобразит вашу игру, будет расширяться GLSurfaceView. Ваш класс рендеринга будет реализовывать Renderer. В вашем классе Renderer вам нужно будет добавить эти нереализованные методы: onDrawFrame(), onSurfaceChanged(), and onSurfaceCreated().

Надеюсь, это поможет.

+0

Я нашел много информации из документации по Android. Извините, что не упомянул об этом в своем ответе. Таким образом, вы говорите, что я сохраняю свой код «update()» в классе, который расширяет GLSurfaceView, и переводит мой код «render()» в другой класс, расширяя Renderer и помещая его в метод onDrawFrame(). Просьба уточнить. и смогу ли я контролировать выполнение этого метода из моего потока? – udiboy1209

+0

Игра обновлена ​​в методе onDrawFrame(). Ваш GLSurfaceView - это в основном пустое окно. Средство визуализации обрабатывает всю логику игры. – jessenave

+0

ohk благодарит за помощь! – udiboy1209