如何在 EGL 或 GLSurfaceView 中设置 OpenGL 版本?
对于我正在处理的 OpenGL Android 项目,我需要 ES 2.0,但我需要对渲染缓冲区/表面的控制,我习惯于使用 EGL 来实现。因为我无法找出使用 GLSurfaceView 渲染到屏幕外缓冲区的任何方法,然后从不显示缓冲区。即使我使用 GLSurfaceView.EGLContextFactory,如果没有 Android EGL 包中未包含的 EGL 1.2 函数/常量(例如 EGL_CONTEXT_CLIENT_VERSION),我也想不出任何方法来完成此任务。
因此,第一个明显的问题是:有没有办法 1) 尽管省略了 EGL_CONTEXT_CLIENT_VERSION 和 eglBindAPI(),但仍将 EGL 与 ES 2.0 一起使用? 2)是否有一些新的API用于设置在调用GLSurfaceView的回调surfaceCreated(EGLConfig)之前使用的渲染上下文?
For the OpenGL Android project I am working on, I need ES 2.0, but I need the control of rendering buffers/surfaces I am accustomed to achieving by using EGL. For I cannot figure out any way to render to an offscreen buffer using GLSurfaceView, and then never displaying the buffer. Even if I use GLSurfaceView.EGLContextFactory, I cannot think of any way to accomplish this without EGL 1.2 functions/constants not included in Android's EGL package (e.g. EGL_CONTEXT_CLIENT_VERSION).
So the first obvious question is: is there a way to either 1) use EGL with ES 2.0 despite the omission of EGL_CONTEXT_CLIENT_VERSION and of eglBindAPI()? 2) is there some new API for setting the rendering context used before GLSurfaceView's callback surfaceCreated(EGLConfig) is called?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您可以使用默认的 EGLContextFactory 和 EGLConfigChooser,则可以使用 setEGLContextClientVersion() GLSurfaceView 的 方法。
否则,如果您正在编写自己的 EGLContextFactory 和 EGLConfigChooser,自己定义常量即可。在配置选择器中,定义
然后将其作为 EGL_RENDERABLE_TYPE 的值与您想要的其他属性一起传递给 eglChooseConfig:
对于上下文工厂,
在创建上下文时定义并使用它:
当您编写这些内容时,将它们传递给 setEGLContextFactory 和 setEGLConfigChooser 分别。
If you can live with the default EGLContextFactory and EGLConfigChooser, you can use the setEGLContextClientVersion() method of the GLSurfaceView.
Otherwise, if you're writing your own EGLContextFactory and EGLConfigChooser, just define the constants yourself. In the config chooser, define
then pass this as the value for EGL_RENDERABLE_TYPE to eglChooseConfig, together with other attributes you desire:
For the context factory, define
and use this when creating a context:
When you've written those, pass them to setEGLContextFactory and setEGLConfigChooser, respectively.