Using OpenGL ES 3.0+ in Kanzi

Kanzi supports the OpenGL ES 3.0, 3.1, and 3.2 shading languages (GLSL ES versions 300, 310, 320). With OpenGL ES 3.0+, you can use integer textures, floating point, and multiple render targets. For example, this allows you to have more precision with the rendered images, you can apply better looking post-processing effects, use HDR for textures and cubemap textures, and create seamless cubemaps. With OpenGL ES 3.2, you can use geometry and tessellation shaders.

Before you use OpenGL ES 3.0+, make sure that your target platform supports the API version.

To use OpenGL ES 3.0+ in Kanzi:

  1. In the Kanzi Studio main menu, select Project > Properties and set the Target Graphics API to OpenGL ES 3.0, OpenGL ES 3.1, or OpenGL ES 3.2.

    ../../_images/project-properties8.png ../../_images/target-graphics-api-opengl-es-301.png
  2. In your shader source files, add as the first line the OpenGL ES 3.0+ version tag:

    • For OpenGL ES 3.0, add

      #version 300 es
      
    • For OpenGL ES 3.1, add

      #version 310 es
      
    • For OpenGL ES 3.2, add

      #version 320 es
      

Setting the color format of textures

You can import to your Kanzi Studio project HDR and floating point images in .dds format and set the color format of the textures that use these images.

To set the color format of textures:

  1. In the Kanzi Studio main menu, select Project > Properties and set the Target Graphics API to OpenGL ES 3.0 or newer.

    ../../_images/project-properties8.png ../../_images/target-graphics-api-opengl-es-301.png
  2. In the Library > Resource Files > Images, select the image whose color format you want to set.

    ../../_images/library-resource-files-images1.png
  3. In the Properties, set:

    • Target Format to Raw

    • Color Format in Raw to the color format that you want Kanzi to use to interpret the texture

    ../../_images/target-format-raw.png ../../_images/color-format-in-raw.png
  4. In the Library > Materials and Textures > Textures, select the texture that uses the image whose color format you set in the previous step. In the Properties, set:

    • Wrap Mode to Clamp

    • Mipmap Mode to Linear or Nearest

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

Setting the format of a render target texture

Set the format of a render target texture to define the target pixel format used by the GPU.

To set the format of a render target texture:

  1. In the Kanzi Studio main menu, select Project > Properties and set the Target Graphics API to OpenGL ES 3.0 or newer.

    ../../_images/project-properties8.png ../../_images/target-graphics-api-opengl-es-301.png
  2. In the Library > Materials and Textures > Textures, select or create a Render Target Texture.

  3. In the Properties, set the Format to the target pixel format that you want to use.

    ../../_images/render-target-texture-es-30-format.png
  4. If your render target textures are in integer target format, set the Minification Filter and Magnification Filter properties to Nearest.

Selecting runtime graphics backend

On the Windows operating system you can select whether you want to use OpenGL ES or OpenGL in the Application::onConfigure function, in the application.cfg, or using the command line arguments, if your target supports command line arguments.

On the command line use:

  • -gles to use OpenGL ES

  • -gl to use OpenGL

  • -egl to use EGL

  • -wgl to use WGL

  • -glx to use GLX

In application.cfg

SurfaceClientAPI = clientApi

GraphicsContextAPI = contextApi

In Application::onConfigure

configuration.defaultSurfaceProperties.clientAPI = clientApi;

configuration.defaultSurfaceProperties.contextAPI = contextApi;

Values

clientApi

To use OpenGL ES:

To use OpenGL:

contextApi

To use WGL:

To use EGL:

To use GLX:

application.cfg example

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

Application::onConfigure example

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

Enabling OpenGL ES 3.0 in the Android Emulator

When you deploy to the Android Emulator an application that uses OpenGL ES API level higher than 2.0, enable OpenGL ES 3.0 in the Android Emulator.

To enable OpenGL ES 3.0 in the Android Emulator:

  1. In Android Studio, in the Device Manager, for the running virtual device, select Extended Controls.

    ../../_images/android-studio-device-manager-extended-controls.png
  2. In the Extended Controls window, select Settings > Advanced. Set the OpenGL ES API level option to Renderer maximum (up to OpenGL ES 3.1).

    ../../_images/extended-controls-settings-opengles-api-level.png
  3. To apply the changes, restart the Android Emulator.

See also

Textures

Using render target textures

Shaders

Editing shaders

Application configuration reference