OpenGL:绘制FBO时的纹理

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

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

- 直接在主帧缓冲区上绘制相同的场景可以正常工作。 纹理和非纹理对象渲染良好。

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

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

- 纹理坐标是正确的。

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

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


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


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

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

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

链接地址: http://www.djcxy.com/p/33915.html

上一篇: OpenGL: Texturing while Drawing an FBO

下一篇: Render pixels to texture