2016-08-17 11 views
0

私はOpenGL ES 3.1プログラムを作成しており、実行中のデバイス(Android 6で実行中)の最大ワークグループサイズを知りたいと思っています。 GL_MAX_COMPUTE_WORK_GROUP_COUNTGL_MAX_COMPUTE_WORK_GROUP_SIZE正常に動作しますが、私はAndroid上の等価を行うように見えるカントを照会PC用計算シェーダのワークグループの最大サイズを取得しますか?

私は

OpenTKコードのような何かしようとしたとき、私はOpenGL error: InvalidEnumを得る:ネイティブと同じ

int[] work_grp_cnt = new int[3]; 
GL.GetInteger(All.MaxComputeWorkGroupCount, work_grp_cnt); 

をAndroid API:

int[] work_grp_cnt = new int[3]; 
IntBuffer maxCount = IntBuffer.Allocate(3); 
GLES20.GlGetIntegerv(GLES31.GlMaxComputeWorkGroupCount, maxCount); 
maxCount.Get(work_grp_cnt); 

(いずれの場合も、GLGetIntegerは同じInvalidEnumエラーを発生させます) これはOpenGL ES 3.1で可能ですか?
私はSony Xperia Z5を使用しています

答えて

1

Cでは、インデックスを取るglGetIntegeri_vに電話する必要があります。 GL_MAX_COMPUTE_WORK_GROUP_COUNTの場合、インデックスはクエリするディメンションです。一度に1つの値しか返しません。

この機能のJavaに相当するものを見つけて使用する必要があります。

+0

私は私の機能と同等のJava、その同じ誤りを追加しました。また、エラーはOpenGL側にあります。私は間違ったAPIを呼び出していると思います。私の構文は間違っていません。 – sydd

+0

これは同じ機能ではありません。 "i_"部分は重要です。 –

+0

ありがとうございます。別の答えとして作業コードを投稿しました。 – sydd

2

@NicolBoasが指摘したように私は間違った機能を呼び出しました。 HERESに作業コード:

OpenTK:

 GL.GetInteger(All.MaxComputeWorkGroupCount, 0, out work_grp_cnt[0]); 
     GL.GetInteger(All.MaxComputeWorkGroupCount, 1, out work_grp_cnt[1]); 
     GL.GetInteger(All.MaxComputeWorkGroupCount, 2, out work_grp_cnt[2]); 

     GL.GetInteger(All.MaxComputeWorkGroupSize, 0, out work_grp_size[0]); 
     GL.GetInteger(All.MaxComputeWorkGroupSize, 1, out work_grp_size[1]); 
     GL.GetInteger(All.MaxComputeWorkGroupSize, 2, out work_grp_size[2]); 

ネイティブのAndroid:

 GLES31.GlGetIntegeri_v(GLES31.GlMaxComputeWorkGroupCount, 0, work_grp_cnt, 0); 
     GLES31.GlGetIntegeri_v(GLES31.GlMaxComputeWorkGroupCount, 1, work_grp_cnt, 1); 
     GLES31.GlGetIntegeri_v(GLES31.GlMaxComputeWorkGroupCount, 2, work_grp_cnt, 2); 

     GLES31.GlGetIntegeri_v(GLES31.GlMaxComputeWorkGroupSize, 0, work_grp_size, 0); 
     GLES31.GlGetIntegeri_v(GLES31.GlMaxComputeWorkGroupSize, 1, work_grp_size, 1); 
     GLES31.GlGetIntegeri_v(GLES31.GlMaxComputeWorkGroupSize, 2, work_grp_size, 2); 
関連する問題