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 以降では、整数テクスチャ、浮動小数点、マルチレンダーターゲットを使用できます。これにより、たとえばレンダリングされる画像の精度を高めたり、より見栄えの良いポストプロセスエフェクトを適用したり、テクスチャやキューブマップテクスチャに HDR を使用したり、シームレスなキューブマップを作成したりできます。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 バージョンタグを追加します。
Kanzi では、Target Graphics API にかかわらず、シェーダーソースコードのバージョンタグとして
#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 の3つのファミリーすべてに対してシェーダーをコンパイルします。kzb ファイルのサイズを小さくするには、ターゲットプラットフォームで使用しないファミリーを削除します。
Kanzi Studio が OpenGL および OpenGL ES ファミリーに使用する GLSL または GLSL ES のバージョンは、Target Graphics API 設定によって決まります。
注釈
Target Graphics API が Vulkan 1.2 の場合、Kanzi Studio は Target Shader Family の設定にかかわらず 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 は、選択したファミリーをプロパティフィールドにカンマ区切りのリストとして表示します。
テクスチャの色フォーマットの設定¶
Kanzi Studio プロジェクトに .dds 形式のHDRおよび浮動小数点画像をインポートし、これらの画像を使用するテクスチャのカラーフォーマットを設定できます。
テクスチャのカラーフォーマットを設定するには:
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 オペレーティングシステムでは、OpenGL ES、OpenGL、Vulkan のどれを使用するかを、Application::onConfigure 関数、application.cfg、またはコマンドラインアーギュメント (ターゲットがコマンドラインアーギュメントをサポートしている場合) で選択できます。
コマンドラインでは、以下を使用します。
OpenGL ES を使用する場合は
--glesまたは--openglesOpenGL を使用する場合は
--glまたは--openglVulkan を使用する場合は
--vkまたは--vulkanEGL を使用する場合は
--eglWGL を使用する場合は
--wglGLX を使用する場合は
--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を有効にする¶
OpenGL ES APIレベルが2.0より高いアプリケーションをAndroidエミュレーターにデプロイする場合、Androidエミュレーターで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 を再起動してください。