0

有谁知道在绘制纹理 FBO 时是否可以渲染纹理对象?例如,我想生成一个显示纹理茶壶渲染的 FBO/纹理。这可以用来显示所述茶壶的镜面反射。

我现在已经尝试了几次,它总是返回一个不可见的对象。FBO/纹理显示线条和其他非纹理阴影对象,但不显示纹理对象。奇怪的...

-- 直接在主帧缓冲区上绘制相同的场景效果很好。纹理和非纹理对象渲染得很好。

-- 生成 FBO/纹理时不使用我正在渲染的纹理 ID。所以,没有循环绑定。

-- glGetError 在 glDrawElements 之后没有返回任何错误,所以这不是问题的根源。

-- 纹理坐标正确。

-- 我的显卡(Intel x3100)确实支持 Mac OS-X 10.6.7 上的 OpenGL 2.0,并且 FBO 示例程序运行良好(但是它们没有纹理)。

这可能是非常简单的事情,但我就是找不到它......


如果不可能,那么推荐的方法是什么?带着色器?这需要某种形式的多重纹理吗?

4

1 回答 1

1

FBO 与其他渲染目标不同,因此纹理效果很好。唯一的原因是,部分纹理单元可能仍被 FBO 附件阻塞。一个 FBO 不能同时作为渲染目标和纹理源,所以如果 OpenGL 认为这可能是这种情况,事情可能会发生。

确保将 FBO 渲染为纹理,首先必须将 FBO 及其附件与它所使用的所有纹理单元解除绑定,然后将 FBO 绑定为渲染绘制缓冲区。

完成对 FBO 的绘制后,首先将其解除绑定为渲染缓冲区目标,然后将其绑定到要使用它的纹理单元。

于 2011-05-06T09:04:10.173 回答