在Android NDK中,是否可以使用典型的Java端GLSurfaceView模式(从GLSurfaceView.Renderer onDrawFrame,onSurfaceCreated等覆盖方法)使用OpenGL ES 1.1,同时在C++端使用帧,颜色和深度缓冲区,以及VBO?
我正在尝试使用它创建它们:
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);
}
Run Code Online (Sandbox Code Playgroud)
但是,似乎这没有得到适当的上下文,我认为这是在初始化GLSurfaceView和渲染器时创建的(java端).
我不是NDK和OpenGLES的专家,但我必须移植一个使用OpenGL ES 1.1的iOS应用程序,我的目标是尽可能多地重用代码.由于应用程序还在利用特定于平台的UI组件(按钮,列表等),同时绘制GL图形,我认为这将是最好的方法.但是,我现在正在考虑使用本机活动,但我不确定与其他java组件的关系是什么.