Ответ:
1) Начните с исходного кода GLSurfaceView, назовите файл GLTextureView.java
2) Измените заголовок на: GLTextureView extends TextureView реализует SurfaceTextureListener.
3) Переименуйте конструкторы в GLTextureView. Удалите код из метода init ().
4) Организуйте импорт. Всегда выбирайте вариант, отличный от GLSurfaceView.
5) Найдите каждый экземпляр SurfaceHolder и измените его на SurfaceTexture.
6) Добавьте нереализованные методы для SurfaceTextureListener, каждый метод должен быть следующим:
- onSurfaceTextureAvailable - surfaceCreated (поверхность)
- onSurfaceTextureDestroyed - surfaceDestroyed (поверхность), (вернуть истину)
- onSurfaceTextureSizeChanged - surfaceChanged (поверхность, 0, ширина, высота)
- onSurfaceTextureUpdated - requestRender ()
7) Должна быть одна строка, в которой выполняется вызов getHolder (), измените ее на getSurfaceTexture ()
8) В методе init () поместите следующую строку setSurfaceTextureListener(this)
Затем добавьте OnLayoutChangeListener
и пусть он вызовет surfaceChanged(getSurfaceTexture(), 0, right - left, bottom - top)
.
После этого вы сможете заменить свой код GLSurfaceView на GLTextureView
и получить преимущества GLTextureView
. Также убедитесь, что ваше приложение поддерживает аппаратное ускорение и что ваш модуль рендеринга расширяет GLTextureView
.Renderer.
person
William Goodale
schedule
21.08.2012