纹理小部件渲染OpenGL示例

7
我的Flutter应用程序需要显示3D模型并允许用户旋转它。我通过本地视图(ViewController和Activity)和用于渲染的C++代码来实现这一点,作为下一步,我尝试使用Texture小部件来删除本地视图并仅使用Flutter。我成功地通过FlutterTexture在iOS上显示了OpenGL渲染,但不知道如何在Android上实现。你能展示一些如何使用SurfaceTexture和将其连接到Texture小部件的示例吗?

这并不是一个完整的OpenGL示例,但Flutter的一个集成测试包括使用SurfaceTexture:https://github.com/flutter/flutter/blob/f407871cb908a3e18e1e03f15a9172982e710786/dev/integration_tests/external_ui/android/app/src/main/java/io/flutter/externalui/MainActivity.java - RedBrogdon
1个回答

7

在配置OpenGL栈时,eglCreateWindowSurface应该接受一个SurfaceTexture参数。

我花了一些时间创建了一个示例项目和文章: https://github.com/mogol/opengl_texture_widget_example https://medium.com/@germansaprykin/opengl-with-texture-widget-f919743d25d9

private void initGL() {
    egl = (EGL10) EGLContext.getEGL();
    eglDisplay = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);

    int[] version = new int[2];
    egl.eglInitialize(eglDisplay, version);

    EGLConfig eglConfig = chooseEglConfig();
    eglContext = createContext(egl, eglDisplay, eglConfig);

    eglSurface = egl.eglCreateWindowSurface(eglDisplay, eglConfig, texture, null);

    egl.eglMakeCurrent(eglDisplay, eglSurface, eglSurface, eglContext);
}

我成功地基于你的例子构建了一个示例。它可以工作,但是我在使用glTexImage2D渲染到纹理时遇到了困难。你能看一下吗?https://dev59.com/slMH5IYBdhLWcg3wux0- - PPP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接