我正在尝试设置EGLImage
源兄弟为 a 的位置GL_RENDERBUFFER
(EGLClientBuffer
指定为 的参数eglCreateImageKHR
)。在另一种情况下,我创建 aGL_TEXTURE_2D
并将其指定为EGLImage
使用glEGLImageTargetTexture2DOES
. 不幸的是,后一个调用导致GL_INVALID_OPERATION
. 如果源兄弟姐妹和目标兄弟姐妹都是GL_TEXTURE_2D
's,则设置就像一个魅力。
根据我对规范的阅读,这应该是允许的操作。我的简化测试用例也可能有其他一些正交问题。尽管我对此表示怀疑,因为当源兄弟姐妹和目标兄弟姐妹都是GL_TEXTURE_2D
's. 但是,如果这是问题所在(并且 s 的这种用法EGLImage
是允许的),那么可能导致GL_INVALID_OPERATION
. 还是我对规范的解释弄错了?
参考扩展:
http://www.khronos.org/registry/gles/extensions/OES/OES_EGL_image.txt
http://www.khronos.org/registry/egl/extensions/KHR/EGL_KHR_image_base.txt
说明:
- 我会检查规范中是否存在所有扩展(
EGL_KHR_image
、EGL_KHR_image_base
、EGL_KHR_gl_texture_2D_image
、EGL_KHR_gl_renderbuffer_image
等)。 - 我也意识到,当我使用 a
GL_RENDERBUFFER
vs aGL_TEXTURE_2D
作为源时,EGLImage 的内部格式可能存在差异。所以我尝试OES_EGL_image_external
先使用扩展,将纹理作为源,然后使用渲染缓冲区。纹理一如既往地工作正常,GL_INVALID_OPERATION
渲染缓冲区也是如此。绑定时使用外部图像对生成的错误没有影响。 - 每次调用后都会检查 GL 和 EGL 错误。