2011-05-06 94 views
0

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

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

- 直接在主framebuffer上绘制相同的场景工作正常。纹理&非纹理对象渲染良好。

- 生成FBO /纹理时未使用渲染到的纹理ID。所以,没有通告的约束力。

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

- 纹理坐标是正确的。我的图形卡(英特尔x3100)确实支持Mac OS-X 10.6.7上的OpenGL 2.0,并且FBO示例程序正常工作(但它们不具有纹理功能)。

这可能是真实的东西简单,但我无法找到它...


如果是不可能的,那么有什么推荐的方法做到这一点? 使用着色器? 这是否需要某种形式的多纹理?

+0

OK使用它的纹理单元之后,一切工作正常。我只是在绘制FBO之前忘记去除对glActiveTextureARB()的调用,实质上是将所有绘图重定向到其他地方。它总是那些小东西...... – 2011-05-06 12:08:06

回答

1

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

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

精拉伸到FBO先解除它作为渲染缓冲区的目标,然后将其绑定到你想。