在 Android NDK 中,是否可以使 OpenGL ES 1.1 与典型的 java 端 GLSurfaceView 模式(覆盖 GLSurfaceView.Renderer onDrawFrame、onSurfaceCreated 等的方法)一起工作,同时在 C++ 端使用帧、颜色和深度缓冲区,以及伊布?
我正在尝试使用以下方法创建它们:
void ES1Renderer::on_surface_created() {
// Create default framebuffer object. The backing will be allocated for the current layer in -resizeFromLayer
glGenFramebuffersOES(1, &defaultFramebuffer);
glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
// Create color renderbuffer object.
glGenRenderbuffersOES(1, &colorRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, colorRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, colorRenderbuffer);
// create depth renderbuffer object.
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);
}
但是,这似乎没有适当地获得上下文,我认为这是在初始化 GLSurfaceView 和渲染器时创建的(java 端)。
我不是 NDK 和 OpenGLES 方面的专家,但我必须移植一个使用 OpenGL ES 1.1 的 iOS 应用程序,并且我的目标是尽可能多地重用代码。由于该应用程序还利用了特定于平台的 UI 组件(按钮、列表等),在绘制 GL 图形时,我认为这将是最好的方法。但是,我现在正在考虑使用本机活动,尽管我不确定与其他 java 组件的关系是什么。