- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试从绑定(bind)到 GL_TEXTURE_EXTERNAL_OES 的 OpenGL 纹理读取像素/数据。
将纹理绑定(bind)到该目标的原因是因为为了在 android 上获得实时摄像头反馈,需要从绑定(bind)到 GL_TEXTURE_EXTERNAL_OES 的 OpenGL 纹理创建 SurfaceTexture。
由于 android 使用 OpenGL ES 我不能使用 glGetTexImage() 来读取图像数据。
因此我将目标绑定(bind)到 FBO,然后使用 readPixels() 读取它。这是我的代码:
GLuint framebuffer;
glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
//Attach 2D texture to this FBO
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_EXTERNAL_OES, cameraTexture, 0);
status("glFramebufferTexture2D() returned error %d", glGetError());
但是由于某种原因我收到错误 1282 (GL_INVALID_OPERATION)。
最佳答案
我认为这可能是问题所在:
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_EXTERNAL_OES, cameraTexture, 0);
您不应将 cameraTexture 附加到帧缓冲区,而应生成 GL_TEXTURE_2D 格式的新纹理
glGenTextures(1, mTextureHandle, 0);
glBindTexture(GL_TEXTURE_2D, mTextureHandle[0]);
...
cameraTexture 是您从 SurfaceTexture 获得的,它是用于渲染的源。这个新纹理是您应该渲染的纹理(稍后可以在渲染管道中使用)。然后这样做:
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, mTextureHandle[0], 0);
cameraTexture被绘制到framebuffer的attached texture上,使用一个简单的shader程序绘制,使用shader程序时绑定(bind)cameraTexture:
glBindTexture(GL_TEXTURE_EXTERNAL_OES, cameraTexture);
关于android 从 GL_TEXTURE_EXTERNAL_OES 读取像素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23256991/
我需要一种渲染GL_TEXTURE_EXTERNAL_OES纹理的方法。我尝试将纹理绑定(bind)到帧缓冲区,但出现 GL_INVALID_ENUM 错误。这是一些示例代码: glEnable(GL
我正在尝试从绑定(bind)到 GL_TEXTURE_EXTERNAL_OES 的 OpenGL 纹理读取像素/数据。 将纹理绑定(bind)到该目标的原因是因为为了在 android 上获得实时摄像
我是 Android 开发中 OpenGL ES 的新手。我在研究中发现了两种纹理: GL_TEXTURE_2D GL_TEXTURE_EXTERNAL_OES 有人告诉我,它们彼此不兼容。 我有两个
我需要将数据从 GL_TEXTURE_EXTERNAL_OES 发送到简单的 GL_TEXTURE_2D(将图像从 Android 播放器渲染到 Unity 纹理),目前通过从带有附加源纹理的缓冲区读
我想在 Java 中渲染一个图像缓冲区(在这种情况下,NDK 不是一个选项)并通过 GL_TEXTURE_EXTERNAL_OES 将其传递给着色器. glTexImage2D 不起作用,如 spec
我是在 Android 上开发 Opencv 应用程序的初学者。我在 Android 上编译 OpenCV 示例(15 个谜题)时遇到两个错误: 1. 错误:找不到符号变量 GL_TEXTURE_EX
我有一个纹理,绑定(bind)到 GL_TEXTURE_EXTERNAL_OES 目标 GLES20.glBindTexture(GLES11Ext.GL_TEXTURE_EXTERNAL_O
我是一名优秀的程序员,十分优秀!