【问题标题】:OpenGL: Texturing while Drawing an FBOOpenGL:绘制 FBO 时的纹理
【发布时间】:2011-05-06 06:44:05
【问题描述】:

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

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

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

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

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

-- 纹理坐标正确。

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

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


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

【问题讨论】:

  • 好的,一切正常。我只是忘记在绘制 FBO 之前删除对 glActiveTextureARB() 的调用,基本上将所有绘图重定向到其他地方。总是小事……

标签: macos opengl textures fbo


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多