Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GLES2.0:通过glEGLImageTargetTexture2DOES使用GL_纹理_外部_OES_Java_Android_Opengl Es 2.0_Egl - Fatal编程技术网

Java GLES2.0:通过glEGLImageTargetTexture2DOES使用GL_纹理_外部_OES

Java GLES2.0:通过glEGLImageTargetTexture2DOES使用GL_纹理_外部_OES,java,android,opengl-es-2.0,egl,Java,Android,Opengl Es 2.0,Egl,我想用Java渲染一个图像缓冲区(在这种情况下NDK没有选项),并通过GL\u TEXTURE\u EXTERNAL\u OES将其传递给着色器 glTexImage2D不工作,如中所述。但是函数glEGLImageTargetTexture2DOES只能通过GLES11Ext类使用,这似乎有点不正确 无论如何,我试过了,它给了我GL\u无效\u操作,如果: 如果GL无法使用提供的 eglImageOES(例如,如果指多采样 eglImageOES),生成错误INVALID_操作 遗憾的是,我无

我想用Java渲染一个图像缓冲区(在这种情况下NDK没有选项),并通过
GL\u TEXTURE\u EXTERNAL\u OES
将其传递给着色器

glTexImage2D
不工作,如中所述。但是函数
glEGLImageTargetTexture2DOES
只能通过
GLES11Ext
类使用,这似乎有点不正确

无论如何,我试过了,它给了我
GL\u无效\u操作
,如果:

如果GL无法使用提供的 eglImageOES(例如,如果指多采样 eglImageOES),生成错误INVALID_操作

遗憾的是,我无法从这个描述中看出正反两面,特别是因为Android Java API似乎不允许我访问
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" );
//绑定纹理单元0
GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
throwOnError(“glActiveTexture”);
GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES,_samplerLocation);
throwOnError(“glBindTexture”);
//_输出为ByteBuffer.allocateDirect(像素*Integer.SIZE/Byte.SIZE).order(ByteOrder.nativeOrder()).asIntBuffer()
_output.rewind();
_输出限制(像素);
GLES11Ext.glEGLImageTargetTexture2DOES(GL_纹理_外部_OES,_输出);

throwOnError(“glEGLImageTargetTexture2DOES”);// 本页中的一些评论可能会有所帮助:

此处提供测试代码。不幸的是,在Android Java中无法做到这一点