4

この質問に似ていますが、Android の場合:

Android GLES20 はメソッド glShaderBinary をサポートしています。このメソッドは、この gles ドキュメントに基づいて、コンパイル済みのシェーダー バイナリをロードします。ただし、バイナリを実際にプリコンパイルする方法が見つかりません。GLES20.glGetIntegervただし、パラメーター name を使用して呼び出すと、 GLES20.GL_NUM_SHADER_BINARY_FORMATS(少なくともテストしているデバイスでは) 利用可能なシェーダー バイナリ フォーマットが 1 つあることが示されます。ただ実際の使い方がわからない。

4

1 に答える 1

17

バイナリシェーダー形式はベンダー固有です。ベンダーごとに、シェーダーをバイナリにコンパイルするためのさまざまなメカニズムがあります。したがって、ほとんどのAndroidデバイスをサポートするには、特定のベンダーのシェーダーをオフラインでコンパイルするか、オンラインで(GL_OES_get_programバイナリ拡張を使用して)コンパイルし、もちろんフォールバックとしてglslソースを提供する必要があります。

これは、いくつかの人気のあるGPUベンダーからのOpenGL ES2.0S​​DKのリストです。オフラインGLSLシェーダーコンパイラ、またはバイナリGLSLシェーダーに関するドキュメントのいずれかが含まれています。

ARM Maliはmalisc、ホストのコマンドラインでシェーダーをコンパイルできる実行可能ファイルを提供します。

Qualcomm Adrenoでは、実際には、を使用して実行時にGLSLシェーダーのバイナリを取得できますglGetProgramBinaryOESが、オフラインでは取得できません。少なくとも、AdrenoSDKのドキュメントはそう言っています。

PowerVR SDKは、GPUが実行時にを使用してGLSLシェーダーのバイナリを取得できることも示していますglGetProgramBinaryOES

glGetProgramBinaryOES関数はGL_OES_get_program_binary拡張子から来ています。

于 2012-06-13T05:33:32.510 に答える