2017-07-11 5 views
0

、複数のプロパティの値を取得するために、プログラム内の指定されたリソースのインデックスを照会するようGLESプログラムリソースインデックス/位置

//for simplify I omit the params 
GLuint glGetProgramResourceIndex(...); 
void glGetProgramResourceiv(...); 
GLint glGetProgramResourceLocation(...); 

などの機能がありますプログラム内の名前付きリソースの場所を照会するために、索引の索引を持つ単一のアクティブなリソース。

、そのような機能がある:均一変数の位置を取得するために、名前の均一なブロックのインデックスを取得する

void glGetUniformIndices(...); 
GLuint glGetUniformBlockIndex(...); 
GLint glGetUniformLocation(...); 

は。 @Nicolボーラへ

おかげで、私はすでにこの質問Difference between uniform location and uniform index?

により均一な場所と均一なインデックスの違いを知っている。しかしprogram resources index/locationuniform index/locationとの間の関係は何ですか? (4.3の前)の古いOpenGLのバージョンで

答えて

1

は、いくつかの異なるAPIは、例えば、シェーダのリソースを識別サブルーチンの制服の属性についてglGetActiveAttribglGetActiveUniform*またはglGetActiveSubroutine*への呼び出しがありました。

OpenGL 4.3では、これらのリソースを照会する統一された方法は、ARB_program_interface_query拡張を介して導入されました。これらのコマンドを使用すると、上記の関数と基本的に同じことを行うことができますが、すべてのリソースタイプに対して異なるメソッドを使用する必要はありません。

This pageには、このトピックに関する詳細情報があります。

+0

したがって、リソースの識別は同じですが、異なるAPIから取得しますか?一様変数 'x'の' glGetProgramResourceLocation'によって検索されたプログラムリソースの場所は、同じ統一変数の 'glGetUniformLocation'によって検索された一様な場所に等しくなりますか? – Zieng

+0

所在地:はい。インデックスのために私は確信していない – BDL

+0

私はインデックスも同じだと思います。私は7.6 [OpenGL ES 3.2仕様]の統一変数(https://www.khronos.org/registry/OpenGL/specs/es/3.2/es_spec_3.2.pdf)でそれを見つけました。あなたの答えとコメントに本当にありがとう! – Zieng