7

Javaで画像バッファをレンダリングし(この場合、 NDKはオプションではありません)、を介してシェーダーに渡しますGL_TEXTURE_EXTERNAL_OES

glTexImage2D仕様に記載されているように、動作しません。しかし、この関数glEGLImageTargetTexture2DOESはクラスを介してのみ利用可能であり、GLES11Ext使用するのはちょっと間違っているようです。

とにかく、私は試しました、そしてそれは私に与えますGL_INVALID_OPERATION、それは次の場合に起こるはずです:

GLが提供されたeglImageOESを使用してテクスチャオブジェクトを指定できない場合(たとえば、マルチサンプリングされたeglImageOESを参照している場合)、エラーINVALID_OPERATIONが生成されます。

残念ながら、この説明から頭や尾を作ることはできません。特に、AndroidJavaAPIではeglImageOES関数にアクセスできないようです。この関数を使用するためのJavaの例も見つかりませんでした。

小さな例を添付しました:

// Bind the texture unit 0
GLES20.glActiveTexture( GLES20.GL_TEXTURE0 );
throwOnError( "glActiveTexture" );

GLES20.glBindTexture( GL_TEXTURE_EXTERNAL_OES, _samplerLocation );
throwOnError( "glBindTexture" );

// _output is ByteBuffer.allocateDirect(pixels * Integer.SIZE / Byte.SIZE).order(ByteOrder.nativeOrder()).asIntBuffer()
_output.rewind();
_output.limit( pixels );
GLES11Ext.glEGLImageTargetTexture2DOES( GL_TEXTURE_EXTERNAL_OES, _output );
throwOnError( "glEGLImageTargetTexture2DOES" ); // <-- throws

GLES20.glDrawArrays( GLES20.GL_TRIANGLE_STRIP, 0, 4 );
throwOnError( "glDrawArrays" );

誰かが以前にそれをしたか、これが可能かどうかを知っていましたか?

編集:

実装を見てみましたがglEGLImageTargetTexture2DOES、バッファを正しく設定する必要があるようです。それを追加しましたが、それでも同じエラーです。

4

1 に答える 1

0

このページには役立つコメントがいくつかあります: http://developer.android.com/reference/android/graphics/Sur​​faceTexture.html

于 2014-10-20T16:51:12.143 に答える