【发布时间】:2014-02-03 11:24:13
【问题描述】:
我目前正在开发一个使用 OpenGL ES 2.0 的 GPGPU 项目。我有一个使用帧缓冲区对象(FBO)作为目标的渲染管道,即每个渲染通道的结果都保存在附加到 FBO 的纹理中。到目前为止,这在使用片段着色器时有效。例如,我必须遵循渲染管道:
Preprocessing (downscaling, grayscale conversion)
-> Adaptive Thresholding Pass 1 -> Adapt. Thresh. Pass 2
-> Copy back to CPU
但是,我想通过在预处理步骤之后添加灰度直方图计算来扩展此管道。据我所知,对于 OpenGL ES 2.0,这只适用于顶点着色器中的纹理读取 [1]。我可以确认我的着色器在不同的程序中工作,其中输入是“真实”图像,而不是附加到 FBO 的渲染纹理。因此,我认为如果它来自 FBO,则无法在顶点着色器中读取纹理数据。谁能证实这个假设或者我错过了什么?我正在使用 Nexus 10 进行实验。
[1]:它的工作原理是从顶点着色器中的纹理读取每个像素值,然后从中计算直方图箱,并使用 alpha 混合将其“添加”到片段着色器中。
【问题讨论】:
-
当您尝试从附加的纹理中读取时,是否绑定了 FBO?
-
是的。这不是问题(见下文)。
标签: opengl-es textures shader gpgpu