OpenGL:绘制FBO时纹理化

时间:2011-05-06 06:44:06

标签: macos opengl textures fbo

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

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

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

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

- 在glDrawElements之后glGetError不会返回任何错误,因此这不是问题的根源。

- 纹理坐标是正确的。

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

这可能很简单,但我找不到它......


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

1 个答案:

答案 0 :(得分:1)

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

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

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