当前位置: 首页 > 知识库问答 >
问题:

OpenGL:从Framebuffer对象加载渲染纹理

朱宜
2023-03-14

我正在对帧缓冲器对象进行两次模糊处理。为了确保在FBO中,整个场景都被我试图模糊的图像所覆盖。这是过程。

> < li >我设置了一个< code>FBO,其中包含我需要模糊的图像尺寸。 < li>

我正在使用以下函数设置< code >正交投影(称为< code >设置正交(FBO尺寸)):

glViewport(0,0,w,h)glMatrixMode(GL _ PROJECTION)glload identity()glOrtho(0,1,0,1,-1,1)glMatrixMode(GL _ model view)glload identity()

如果我绘制简单的白色四边形,则视图切换按预期工作。一个四边形在正交投影中绘图,另一个在透视视图中绘图。现在从FBO中获取渲染的纹理(让id是RENDEREDTEXTURE)。

如果我在主场景的< code >正交投影中绑定< code>RENDEREDTEXTURE,它会显示模糊的图像。如果我将它绑定到主场景中的< code >透视图中,之前可见的白色四边形(在< code >透视图中绘制)就会消失。

解决方案:作为答案发布。

注意:使用纹理时,不要忘记生成纹理贴图。

这里可能有什么问题?

请建议任何替代方法,以便在FBO中,只有我要处理的图像是可见的(为此我做了正交投影),并且在主场景中,处理后的图像就像从图像文件加载的任何其他纹理一样。

共有1个答案

红智鑫
2023-03-14

对于帧缓冲器纹理,不会为纹理自动生成 Mipmap。它们必须在帧缓冲器渲染所需的场景后手动触发。

在切换回默认帧缓冲区后立即使用以下代码段。

    glBindTexture(GL_TEXTURE_2D, YOUR_FINAL_RENDERED_TEXTURE_ID)
    glGenerateMipmap(GL_TEXTURE_2D)
    glBindTexture(GL_TEXTURE_2D, 0)

然后,您可以像往常样使用YOUR_FINAL_RENDERED_TEXTURE_ID在任何地方绑定此纹理。

 类似资料:
  • 纹理根本不渲染,几何体都是黑色的。 截图:http://i.imgur.com/ypMdQY4.png 代码:http://pastebin.com/SvB8rxxt 我也会链接到我试图渲染的纹理和transformations.py模块,但是我没有被允许放置两个以上链接的声誉。谷歌搜索“现代opengl 02”会给你前者的教程,“转换py”会给你后者。 搜索“纹理材料开始”以查找纹理材料的设置位

  • 我正在尝试使用OpenGL GLSL着色器渲染到纹理。首先,我尝试用白色填充30x30纹理的每个像素。我将顶点着色器索引从0传递到899,表示纹理的每个像素。对吗?顶点着色器: 片段着色器:

  • 使用LWJGL的OpenGL版本1.1和2D纹理,我发现自己卡住了... 出于某种原因,LWJGL引擎不会在2D图层上渲染加载的纹理...相反,我得到了一个白色正方形... 我假设我很有可能在代码的某个地方遗漏了什么..以下是与此类事件相关的全部代码.. 加载OpenGL环境: 进入2D绘图模式(用于绘制纯色正方形的功能-通过glcolor函数进行测试,然后通过glvertex调用尺寸): 加载映

  • 所以我有一个非常简单的glsl着色器,可以用纹理和平行光渲染对象。 现在我有一个非常艰难的时间试图得到的纹理显示,其他一切工作,除此之外。 当我禁用着色器(glUseProgram(0))时,纹理以黑色和白色渲染,但当我启用它时,整个网格是单一颜色,没有纹理,当我尝试不同的纹理时,它会改变颜色。 这就是我加载纹理的方式 这就是我如何绑定我的纹理 这是我的顶点着色器 这是我的碎片着色器 最后但并非最

  • 这是代码中唯一可能有错误的部分: 你能在这段代码中看到什么错误吗?启用glEnable(GL_TEXTURE_2D)并没有什么不同。纹理坐标是正确的,片段和顶点着色器肯定是正确的。 解决了这不是问题,我仍在使用glGenerateMipmap(…)在glTexImage2D(…)之前。真正的问题是,当我的图像是GL_RGB格式时,我通过了格式GL_RGBA。另外我的t-

  • 我做了一个在上面渲染天空盒和粒子的应用程序。我想添加一些效果,我需要使用帧缓冲区来渲染天空盒、粒子颜色、深度和位置以分离纹理。然后我想使用简单的着色器来使用这些纹理中的值并以适当的方式混合它们。我为纹理、帧缓冲区和屏幕四边形(渲染简单的矩形)编写了辅助类,但不幸的是——当我尝试使用它时没有任何渲染。 当绑定帧缓冲区被注释掉时,我的场景如下所示: 修改着色器表明深度和位置值计算正确。因此问题在于纹理