在 Kanzi 中使用 OpenGL ES 3.0+

Kanzi 支持 OpenGL ES 3.0、3.1 和 3.2 着色语言(GLSL ES 版本 300、310、320)。使用 OpenGL ES 3.0+,您可以使用整数纹理、浮点数和多重渲染目标。例如,这允许您在渲染的图像中获得更高的精度,可以应用更好看的后期处理效果,使用 HDR 纹理和立方体贴图纹理,并创建无缝立方体贴图。使用 OpenGL ES 3.2,您可以使用几何着色器和细分着色器。

在使用 OpenGL ES 3.0+ 之前,确保您的目标平台支持该 API 版本。

要在 Kanzi 中使用 OpenGL ES 3.0+:

  1. 在 Kanzi Studio 主菜单中,选择 Project > Properties,并将 Target Graphics API 设置为 OpenGL ES 3.0、OpenGL ES 3.1 或 OpenGL ES 3.2。

    ../../_images/project-properties.png ../../_images/target-graphics-api-opengl-es-30.png
  2. 在您的着色器源文件中,将 OpenGL ES 3.0+ 版本标签添加为第一行:

    • 对于 OpenGL ES 3.0,添加

      #version 300 es
      
    • 对于 OpenGL ES 3.1,添加

      #version 310 es
      
    • 对于 OpenGL ES 3.2,添加

      #version 320 es
      

设置纹理的颜色格式

您可以将 .dds 格式的 HDR 和浮点图像导入到您的 Kanzi Studio 项目中,并设置使用这些图像的纹理的颜色格式。

要设置纹理的颜色格式:

  1. 在 Kanzi Studio 主菜单中,选择 Project > Properties,并将 Target Graphics API 设置为 OpenGL ES 3.0 或更新版本。

    ../../_images/project-properties.png ../../_images/target-graphics-api-opengl-es-30.png
  2. 在 Library > Resource Files > Images 中,选择您要设置其颜色格式的图像。

    ../../_images/library-resource-files-images.png
  3. 在 Properties 中,设置:

    • Target Format 到 Raw

    • 将 Color Format in Raw 为您希望 Kanzi 用于解释纹理的颜色格式。

    ../../_images/target-format-raw.png ../../_images/color-format-in-raw.png
  4. 在 Library > Materials and Textures > Textures 中,选择使用您在上一步中设置的颜色格式的图像的纹理。在 Properties 中,设置:

    • Wrap Mode 到 Clamp

    • Mipmap Mode 到 Linear 或 Nearest

    ../../_images/mipmapmode-linear-wrap-mode-clamp.png

设置渲染目标纹理的格式

设置渲染目标纹理的格式,以定义 GPU 使用的目标像素格式。

要设置渲染目标纹理的格式:

  1. 在 Kanzi Studio 主菜单中,选择 Project > Properties,并将 Target Graphics API 设置为 OpenGL ES 3.0 或更新版本。

    ../../_images/project-properties.png ../../_images/target-graphics-api-opengl-es-30.png
  2. 在 Library > Materials and Textures > Textures 中,选择或创建一个 Render Target Texture。

  3. 在 Properties 中,将 Format 设置为您要使用的目标像素格式。

    ../../_images/render-target-texture-es-30-format.png
  4. 如果您的渲染目标纹理是整数目标格式,请将 Minification Filter 和 Magnification Filter 属性设置为 Nearest。

选择运行时图形后端

在 Windows 操作系统上,您可以选择是否要在 Application::onConfigure 函数中、在 application.cfg 中,或使用命令行参数来使用 OpenGL ES 或 OpenGL,前提是您的目标支持命令行参数。

在命令行使用:

  • -gles 要使用 OpenGL ES。

  • -gl 要使用 OpenGL

  • -egl 要使用 EGL

  • -wgl 要使用 WGL。

  • -glx 要使用 GLX

在 application.cfg

SurfaceClientAPI = clientApi

GraphicsContextAPI = contextApi

在 Application::onConfigure

configuration.defaultSurfaceProperties.clientAPI = clientApi;

configuration.defaultSurfaceProperties.contextAPI = contextApi;

值

clientApi

要使用 OpenGL ES:

要使用 OpenGL:

contextApi

要使用 WGL:

要使用 EGL:

要使用 GLX:

application.cfg 示例

# Sets the surface target for OpenGL rendering and WGL graphics context.
SurfaceClientAPI = gl
GraphicsContextAPI = wgl

Application::onConfigure 示例

// Sets the surface target for OpenGL rendering and WGL graphics context.
configuration.defaultSurfaceProperties.clientAPI = SurfaceClientAPI::OpenGL;
configuration.defaultSurfaceProperties.contextAPI = GraphicsContextAPI::WGL;

在 Android 模拟器中启用 OpenGL ES 3.0

当您将使用高于 2.0 的 OpenGL ES API 级别的应用程序部署到 Android Emulator 时,请在 Android Emulator 中启用 OpenGL ES 3.0。

要在 Android 模拟器中启用 OpenGL ES 3.0:

  1. 在 Android Studio 中,在 Device Manager 中,为正在运行的虚拟设备选择 Extended Controls。

    ../../_images/android-studio-device-manager-extended-controls.png
  2. 在 Extended Controls 窗口中,选择 Settings > Advanced。将 OpenGL ES API level 选项设置为 Renderer maximum (up to OpenGL ES 3.1)。

    ../../_images/extended-controls-settings-opengles-api-level.png
  3. 要应用更改,请重启 Android Emulator。

另请参阅

纹理 (Textures)

使用渲染目标纹理

着色器 (Shaders)

编辑着色器

应用程序配置参考