在 Kanzi 中使用 OpenGL ES 3.0+¶
Kanzi 支持部署到 OpenGL ES 3.0、3.1 和 3.2。无论部署目标是什么,材质中的着色器 源代码 都必须使用 GLSL ES 310 或更高版本的语法——Kanzi 会将着色器交叉编译为与工程的 Target Graphics API 设置相匹配的 GLSL ES 方言。在 OpenGL ES 3.0 及更高版本中,您可以使用整数纹理、浮点数和多个渲染目标。例如,这让您可以获得更高精度的渲染图像,应用效果更好的后处理效果,为纹理和 cubemap 纹理使用 HDR,以及创建无缝 cubemaps。在 OpenGL ES 3.1 中,您还可以使用计算着色器、图像加载/存储和着色器存储缓冲区对象。在 OpenGL ES 3.2 中,您还可以使用几何着色器和曲面细分着色器。
在使用 OpenGL ES 3.0+ 之前,确保您的目标平台支持该 API 版本。
要选择在 Kanzi 中使用的 OpenGL ES 版本:
在 Kanzi Studio 主菜单中,选择 Project > Properties,并将 Target Graphics API 设置为您的目标平台支持的 OpenGL ES 版本:OpenGL ES 3.0、OpenGL ES 3.1 或 OpenGL ES 3.2。
在着色器源文件中,将 OpenGL ES 版本标签添加为第一行。
无论您的 Target Graphics API 是什么,Kanzi 都要求着色器源代码中的版本标签为
#version 310 es或更高版本。不接受#version 300 es等较早的标签。如果 Target Graphics API 设置为 OpenGL ES 3.0,只要源代码未使用 GLSL ES 3.1 或更高版本中引入的功能,着色器就会在导出时被交叉编译为#version 300 es。对于未使用 GLSL ES 3.1 之后引入的功能的着色器,添加
#version 310 es对于使用几何着色器或曲面细分着色器功能(需要将 Target Graphics API 设置为 OpenGL ES 3.2)的着色器,添加
#version 320 es
设置要导出的着色器系列¶
Kanzi Studio 导出 kzb 文件时,会为 Target Shader Family 属性中列出的系列编译着色器。默认情况下,Kanzi Studio 会为全部三个系列编译着色器:OpenGL、OpenGL ES 和 Vulkan。要减小 kzb 文件的大小,请移除您的目标平台不使用的系列。
Kanzi Studio 为 OpenGL 和 OpenGL ES 系列使用的 GLSL 或 GLSL ES 版本取决于 Target Graphics API 设置。
备注
当 Target Graphics API 为 Vulkan 1.2 时,无论 Target Shader Family 设置如何,Kanzi Studio 都只导出 Vulkan SPIR-V 着色器。
要设置要导出的着色器系列:
在 Kanzi Studio 主菜单中,选择 Project > Properties。
在 Binary Export 类别中,设置 Target Shader Family 属性。点击 Shader family 选择要包括的系列:
OpenGL:Kanzi Studio 为 OpenGL 桌面平台编译 GLSL 着色器。
OpenGL ES:Kanzi Studio 为 OpenGL ES 移动平台和嵌入式平台编译 GLSL ES 着色器。
Vulkan:Kanzi Studio 为 Vulkan 平台编译 SPIR-V 着色器。
要包括多个系列,请从菜单中逐一选择。Kanzi Studio 在属性字段中以逗号分隔的列表显示所选系列。
设置纹理的颜色格式¶
您可以将 .dds 格式的 HDR 和浮点图像导入到您的 Kanzi Studio 项目中,并设置使用这些图像的纹理的颜色格式。
要设置纹理的颜色格式:
在 Library > Resource Files > Images 中,选择您要设置其颜色格式的图像。
在 Properties 中,设置:
Target Format 到 Raw
将 Color Format in Raw 为您希望 Kanzi 用于解释纹理的颜色格式。
在 Library > Materials and Textures >
Textures中,选择使用您在上一步中设置的颜色格式的图像的纹理。在 Properties 中,设置:Wrap Mode 到 Clamp
Mipmap Mode 到 Linear 或 Nearest
设置渲染目标纹理的格式¶
设置渲染目标纹理的格式,以定义 GPU 使用的目标像素格式。
要设置渲染目标纹理的格式:
在 Library > Materials and Textures >
Textures中,选择或创建一个 Render Target Texture。在 Properties 中,将 Format 设置为您要使用的目标像素格式。
如果您的渲染目标纹理是整数目标格式,请将 Minification Filter 和 Magnification Filter 属性设置为 Nearest。
选择运行时图形后端¶
在 Windows 操作系统上,您可以在 Application::onConfigure 函数中、application.cfg 中或使用命令行参数(如果您的目标支持命令行参数)选择要使用 OpenGL ES、OpenGL 还是 Vulkan。
在命令行使用:
--gles或--opengles以使用 OpenGL ES--gl或--opengl以使用 OpenGL--vk或--vulkan以使用 Vulkan--egl以使用 EGL--wgl以使用 WGL--glx以使用 GLX
在 |
|
||||
|
|||||
值 |
|
||||
|
# Sets the surface target for OpenGL rendering and WGL graphics context.
SurfaceClientAPI = gl
GraphicsContextAPI = wgl
|
||||
// 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:
在 Android Studio 中,在 Device Manager 中,为正在运行的虚拟设备选择 Extended Controls。
在 Extended Controls 窗口中,选择 Settings > Advanced。将 OpenGL ES API level 选项设置为 Renderer maximum (up to OpenGL ES 3.1)。
要应用更改,请重启 Android Emulator。