Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 结合画布和OpenGL ES渲染器?_Java_Android_Opengl Es_Canvas_Rendering - Fatal编程技术网

Java 结合画布和OpenGL ES渲染器?

Java 结合画布和OpenGL ES渲染器?,java,android,opengl-es,canvas,rendering,Java,Android,Opengl Es,Canvas,Rendering,我有一个应用程序,它使用一个带有扩展名SurfaceView的类来绘制画布,但我正在考虑转移到openGL。我注意到,如果我只是将SurfaceView扩展更改为GLSurfaceView,应用程序仍然运行相同的功能。我还能够使用openGL ES在另一个应用程序中开始基本绘图 我在下一步中为GLSurfaceView中的渲染器实例化了另一个类,并指示渲染器绘制三角形。这一切编译和运行都很好,但它的运行与原始应用程序完全相同,没有渲染三角形,但画布的其余部分绘制正确 我想不出它为什么不渲染,或者

我有一个应用程序,它使用一个带有扩展名SurfaceView的类来绘制画布,但我正在考虑转移到openGL。我注意到,如果我只是将SurfaceView扩展更改为GLSurfaceView,应用程序仍然运行相同的功能。我还能够使用openGL ES在另一个应用程序中开始基本绘图

我在下一步中为GLSurfaceView中的渲染器实例化了另一个类,并指示渲染器绘制三角形。这一切编译和运行都很好,但它的运行与原始应用程序完全相同,没有渲染三角形,但画布的其余部分绘制正确

我想不出它为什么不渲染,或者为什么不渲染。或者可能是渲染,但它只是被画布覆盖

我知道尝试使用这两种方法似乎有点奇怪,因为我的应用程序是实时的,我宁愿按照自己的速度将渲染切换到GL,这样我就不用花一个月的时间来完成下一次更新


有人试过这么做吗?在画布上运行Gl渲染器

不能同时使用OpenGL和画布在单个SurfaceView上进行渲染。但是,您可以在SurfaceView顶部放置另一个视图以达到所需效果。

尝试以下操作:

addContentView(SurfaceView);
addContentView(GLSurfaceView);

或者使用这两个视图创建一个相对布局。

这里是我在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 );

好的,这听起来是个不错的开始。问题,这个概念如何与setContentView()方法一起工作?