У меня есть приложение, которое использует класс с расширением SurfaceView для рисования на холст, но я смотрю на переход к openGL. Я заметил, что если я просто изменил расширение SurfaceView на GLSurfaceView, приложение все равно будет работать одинаково. Я также смог запустить базовый чертеж в другом приложении, используя openGL ES.
Я сделал следующий шаг и создал экземпляр другого класса для средства визуализации в GLSurfaceView, и я инструктирую рендеру рисовать треугольник. Все это компилируется и работает отлично, но оно работает точно так же, как и исходное приложение, без отображения треугольника, но остальная часть холста правильно рисуется.
Я не могу придумать, почему это не рендеринг, или почему это не будет отображаться. Или, может быть, это рендеринг, но он просто переопределяется холстом?
Я знаю, что кажется странным пытаться использовать оба метода. Поскольку мое приложение в прямом эфире, я предпочел бы осуществить перенос рендеринга на GL в своем собственном темпе, так что мне не понадобится месяц, чтобы получить следующее обновление.
Так кто-нибудь когда-либо пытался это сделать? Запустить средство визуализации Glover поверх холста?
Вы не можете использовать OpenGL и Canvas для рендеринга на одном SurfaceView. Однако вы можете поместить еще один вид поверх SurfaceView для достижения желаемого эффекта.
Здесь мой пример кода при добавлении холста над представлением OpenGL, благодаря @Audrius Butkevicius!
mGLView = new MyOpenGLSurfaceView;
// SET OpenGL View
setContentView(myOpenGLView);
mCanvasOverlayView = new View(context)
mOverlayViewParams = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
// ADD Canvas view overlay
addContentView(mCanvasOverlayView, mOverlayViewParams );
Попробуйте следующее:
addContentView(SurfaceView);
addContentView(GLSurfaceView);
или создать относительный макет с обоими представлениями.