Java 如何将Open GL ES 2.0应用程序转换为实时壁纸?

Java 如何将Open GL ES 2.0应用程序转换为实时壁纸?,java,android,opengl-es-2.0,Java,Android,Opengl Es 2.0,我有一个实现GLSurfaceView.Renderer的类,它使用OpenGL ES 2.0,作为标准应用程序可以完美地工作 然而,我想扩大这一点,使其成为一个活的壁纸。当然,我有一个扩展了WallperService的服务类,反过来还有一个扩展了WallperService.engine的引擎类 在代码的正常版本中,我可以 mGLSView = new GLSurfaceView(this); // in the engine this becomes 'new GLSurfaceView(

我有一个实现GLSurfaceView.Renderer的类,它使用OpenGL ES 2.0,作为标准应用程序可以完美地工作

然而,我想扩大这一点,使其成为一个活的壁纸。当然,我有一个扩展了WallperService的服务类,反过来还有一个扩展了WallperService.engine的引擎类

在代码的正常版本中,我可以

mGLSView = new GLSurfaceView(this); // in the engine this becomes 'new GLSurfaceView(getBaseContext());'
mGLSView.setEGLContextClientVersion(2);
mGLSView.setRenderer(new myRenderer());
setContentView(mGLSView);
但是,在“引擎”中不能调用setContentView。大概我需要以某种方式将曲面传递到GLSURFACHEVIEW,但我真的不知道如何传递。我发现的每个示例或教程都使用OpenGL 1,因为我对这一点非常陌生,所以我不太明白如何将它们应用于2.0

那么,有人知道使用OpenGL ES 2.0制作实时壁纸的简单示例吗?还是一个很好的指向哪里阅读的指针


谢谢,

好的,明白了!如果您使用来源(非常感谢Robert Green!!)

无论出于何种原因,我不得不修复一些语法错误,我怀疑这是由于Eclipse的更新版本或自最初编写以来的任何原因造成的

不过,要启用OpenGL ES 2.0,您需要做两个更改。在ComponentSizeChooser的构造函数中添加

EGL10.EGL_RENDERABLE_TYPE, 4, 
给超级电话。同样在DefaultContextFactory的createContext中,将null替换为

new int[] { 0x3098, 2, EGL10.EGL_NONE }
这应该已经为GL ES 2.0启用了

此外,在他的网页上,他还有“setRenderMode(RENDERMODE_WHEN_DIRTY);”我猜想大多数人都希望这是“setRenderMode(RENDERMODE_);”


完整的代码可用。

这看起来很有希望:我已经盯着那个页面看了一段时间,事实上,问题在于它是针对OpenGL 1的,所以才有问题。啊,我不确定版本的差异是否会是一个问题。那我就不确定了,我自己从来没有耐心在OpenGL中制作实时壁纸。实际上GL1导入可能是为了接口。想一想旧版本的东西会有一些语言问题,但也许,只是也许它会起作用!好的,那肯定是个问题。该代码正在替换GLSurfaceView,因此(似乎)没有启用GL2所需的“setEGLContextClientVersion”的等效项。代码有自己的“上下文选择器”,所以可能是这样的,但我似乎深入到了系统中。。。