问题标签 [fbo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - OpenGL 帧缓冲区缓慢且自发停止。广泛使用时甚至会导致系统崩溃
显然,帧缓冲区速度很快,并且是在屏幕外渲染纹理或简单地预先创建事物的最佳方式。
然而,我的游戏根本不喜欢它们。在当前的代码中,经常使用帧缓冲区,有时每帧多次使用。使用时,游戏开始变慢,但不是立即变慢。这似乎需要时间(也许是内存累积问题?)。在某些区域,帧缓冲对象似乎并没有让游戏减速太多,偶尔游戏会停止几秒钟,然后才能正常继续。
我认为帧缓冲区是问题所在,因为游戏在不使用它们的区域速度很快。
我正在使用 python 和 pyopengl。OpenGL 代码类似于其他语言的代码,所以我认为 Python 知识并不重要。
有些东西直接渲染到屏幕上,其他纹理渲染到 Surface 类所涉及的其他纹理。这类似于 pygame,这是我在改变主意之前开始玩游戏的地方。
这是相关的代码。
如果有人能帮我解决这个问题,那就太棒了。我花了很长时间让 FBO 开始工作。令人沮丧的是,它们无法正常工作。如果要删除它们,那又是一场噩梦。但我必须面对任何需要做的事情才能让比赛变得更快。
opengl - 在 OpenGL 中处理 FBO 的最佳方法是什么?
很长一段时间以来,我一直想知道处理 OpenGL 帧缓冲区对象 (FBO) 的最佳方法是什么。切换 FBO 的成本可能很高,但也会定义新的附件。
你怎么做的快?
我在这三个之间犹豫:
1个FBO,改变附件,但不要在FBO之间切换
渲染路径中每个渲染目标(大小 + 格式)的 1 个 FBO。这意味着我将为类似的渲染目标重用相同的 FBO。但这种方式自定义模糊将花费 4+ FBO。
每个渲染目标1个FBO,只设置一次附件,然后在FBO之间切换
另外,我应该尽量减少 FBO 开关的数量(就像我尽量减少纹理绑定的数量一样)?
haskell - VBO/FBO/DisplayLists 如何在 Haskell 的 OpenGL 绑定中工作?
Haskell 是关于通过计算值来计算的。
DisplayLists / FBOs / VBOs本质上是非常有状态的。即“给我一个显示列表/缓冲区对象”。
这些绑定在 Haskell 中是如何工作的?
[我确实了解单子;所以一个技术解释,而不是一个蓬松的解释,是首选]。
谢谢!
opengl - OpenGL FrameBuffer Objects 奇怪的行为
我的算法是这样的:
使用来自多个位置的阴影贴图将场景渲染到 FBO 使用阴影贴图将场景渲染到屏幕...我仍然必须实施的黑魔法... 将步骤 1 中的样本与步骤 2 中的图像结合起来
我正在尝试调试第 1 步和第 2 步,但遇到了奇怪的行为。我对每个阴影映射通道的算法是:将场景渲染到连接到深度阵列纹理的 FBO 从每个灯光的 POV 渲染场景并使用顶点/片段着色器来比较深度
当我以这种方式运行我的算法时:
从点渲染到 FBO 从点渲染到屏幕 glutSwapBuffers()
屏幕通道中的法线向量似乎不正确(可能反转)。我很确定这是问题所在,因为我的漫反射光照计算不正确,但材质颜色正确,并且阴影出现在正确的位置。因此,似乎唯一可能成为罪魁祸首的是法线。
但是,如果我这样做
从点渲染到 FBO 从点渲染到屏幕 glutSwapBuffers() //这里错误 从点渲染到屏幕 glutSwapBuffers()
第二遍是正确的。我认为我的帧缓冲区调用存在问题。谁能从下面的日志中看到问题所在?它来自一个为“缓冲区”而进行的号角跟踪,并进行了一些编辑以使其更加清晰。
iphone - 渲染到纹理或屏幕外帧缓冲区
我OpenGLES
在 iPhone 上渲染到纹理和屏幕外帧缓冲区时遇到问题。
(来源:imagehost.org)(来源:imagehost.org)
第一张图片显示了直接渲染的麻将牌CAEAGLLayer
,这是正确的。第二个显示渲染到屏幕外帧缓冲区的图块,使用复制到纹理glCopyTexImage2D
并将纹理渲染到CAEAGLLayer
. 两者都使用白色不透明四边形作为背景。我也尝试过直接渲染到纹理,但效果与屏幕外帧缓冲区相同。
我创建帧缓冲区的代码:
我从纹理图集中绘制所有图块,只需调用一次glDrawElements
使用 VBO 来传递交错的顶点数据(坐标、纹理坐标、颜色)。我使用RGBA8888纹理格式,将每个图像绘制在具有glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
混合功能的两个三角形(四边形)上。我不使用深度缓冲区(在所有情况下)。
有人可以告诉我可能是什么问题吗?
opengl - 在 GLSL 中检索 FBO 数据
我正在尝试让 MRT 在 OpenGL 中工作以尝试延迟渲染。这是我理解的情况。
- 创建 3 个渲染缓冲区(例如)。两个 RGBA8 和一个 Depth32。
- 创建一个 FBO。
- 将渲染缓冲区附加到 FBO。ColorAttachment0/1 用于颜色缓冲区,DepthAttachment 用于深度缓冲区。
- 绑定FBO。
- 绘制几何图形。
gl_FragData[]
使用片段着色器将数据发送到不同的附件。
在这一点上,我想使用 GLSL 在另一遍中获取数据,a) 如何从帧缓冲区颜色附件中检索数据,b) 从深度组件中获取数据。
c++ - GPU 上的图像处理 - 过滤器的连续着色器 - FBO
我目前正在尝试在 OpenGL 图像处理算法中实现。
我想连续使用几个着色器来执行几个过滤器(Sobel Gaussian,...)。我知道要做到这一点,我必须通过 FBO 渲染纹理。我读了很多关于这个的东西,并写了一个代码。但我没有得到我预期的结果。
目前,我只是尝试使用两个着色器。所以,我有一个原始图像,它是我的第一个着色器的输入。然后,我想将着色器的输出渲染为纹理,然后将其作为第二个着色器的输入(乒乓技术)。最后,我想显示第二个着色器的输出。
但结果,我得到了原始图像。
我的代码如下:
有人知道出了什么问题吗???
c++ - OpenGL:使用多个纹理渲染到 FBO
我正在尝试使用渲染器。我想要的是将一个颜色缓冲区和一个普通缓冲区写入两个单独的纹理。我弄明白了那部分。
但是,颜色缓冲区应该是两个纹理的组合。这应该可以解决问题:
这是片段着色器:(GLSL)
但是,第二个纹理与第一个相同!无论附加到哪个纹理都是GL_TEXTURE0
用于两个采样器的纹理。
初始化 FBO:
完整的渲染部分:
提前致谢。
c++ - 使用 Cg 渲染到屏幕外帧缓冲区对象的示例
我想看一个使用 nVidia Cg 渲染到屏幕外帧缓冲区对象的示例。
我可以访问的计算机有显卡但没有显示器(或 X 服务器)。所以我想渲染我的东西并将它们作为图像输出到磁盘上。显卡是GTX285。