【发布时间】:2016-03-23 11:33:03
【问题描述】:
我正在尝试从拜耳缓冲区渲染视频。
所以我使用 GL_LUMINANCE/GL_UNSIGNED_BYTE 创建了一个纹理。我在这个纹理上应用了一些着色器来生成 RGBA 输出。
以下调用在我的 PC 上运行良好,但在目标板 (iMX6/GLES2) 上运行不正常:
glTexImage2D(GL_TEXTURE_2D, 0, textureFormat, m_texture_size.width(), m_texture_size.height(), 0, bufferFormat, GL_UNSIGNED_BYTE, imageData);
在目标板上,我有黑色纹理。
bufferFormat 是 GL_LUMINANCE。 textureFormat 是 GL_LUMINANCE。
GLES2 实现了一个较小的 OpenGL API 子集: https://www.khronos.org/opengles/sdk/docs/man/xhtml/glTexImage2D.xml
bufferFormat 应该等于 textureFormat。如果我尝试其他格式,它可以在 PC 上运行。在目标板上,我得到一个黑屏和 glGetError() 报告的一些错误。
其他测试失败
如果我尝试 GL_ALPHA,纹理似乎被 (0,0,0,1) 填充。
如果我尝试使用 GL_RGBA/GL_RGBA(这对应用程序没有意义,但它会检查硬件/API 功能),我会在板上看到非黑色纹理。显然,图像不是我所期望的。
为什么 GL_LUMINANCE 给我黑色纹理?如何使它工作?
【问题讨论】:
标签: opengl-es