问题标签 [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.

0 投票
1 回答
1549 浏览

iphone - OpenGL ES glReadPixels exc_bad_access

我正在尝试使用 OpenGL ES 和 ffmpeg 从图像创建视频,但在 iPad(4.3) 上我遇到了崩溃glReadPixels

它适用于 iPhone 4 (4.3) 和 iPod Touch,但在 iPhone 3G(3.0) 和 iPad(4.3) 上存在问题。你能帮我解决这个问题吗?

同样在 iPhone 3G(3.0) 和 iPad(4.3) 上,我的视频有问题 - 前 5-20 个视频帧有垃圾。也许优化问题?还是建筑?

编辑 堆栈:

0 投票
1 回答
2747 浏览

c++ - OpenGL:渲染到附加到 FBO 的颜色纹理会产生白色纹理

我的问题是,在设置了一个帧缓冲区对象后,它具有附加到 GL_COLOR_ATTACHMENT0 点的单一颜色纹理,并在我将其绘制到屏幕上时将许多对象渲染到该纹理上,我得到了一个完全白色的纹理。

现在我知道绘图代码是正确的,因为我可以很好地绘制到后台缓冲区,只是当涉及到帧缓冲区时才会出现问题。绘图代码使用了一个非常基本的着色器,用于对四边形进行纹理处理。

我的代码如下:

然后使用固定函数管道将缓冲区的颜色纹理渲染到屏幕上。

关于我在这里可能做错的任何想法?

0 投票
1 回答
1079 浏览

opengl - OpenGL,FBO的模板缓冲区不起作用?

我尝试在 OpenGL 中使用 FBO 的模板缓冲区,但我无法让它工作。我为深度和模板目标绑定了一个 depth24_stencil8 纹理到 FBO。作为一个简单的测试,我尝试了:

当我使用 GL_NEVER 时,根本不应该渲染任何东西,但我可以看到三角形。这就像根本没有模板,但我不明白为什么。在没有 FBO 的情况下尝试此代码有效,因此我认为我正确使用了模板功能。我不知道如何解决这个问题。是否有人已经在 FBO 中使用了模板?

0 投票
0 回答
2608 浏览

opengl-es - Opengl ES 2.0、FBO 和片段着色器

这是我的渲染循环:

  1. 绑定自定义 FBO
  2. 绑定纹理(以前与 FBO 关联为 COLOR_ATTACHMENT0)
  3. 使用基于分形算法选择片段颜色的自定义片段着色器进行渲染。(如果算法不使用片段,则将其分配为黑色)
  4. 重新绑定窗口提供的帧缓冲区和渲染缓冲区。(在 ios 5 上,这是 [view bindDrawable] 方法。
  5. 将屏幕清除为白色。
  6. 将 fbo 纹理渲染到一个比窗口本身小很多的框架中。

预期结果:分形应该出现在较小的框架中。框架应该有黑色背景。屏幕的其余部分应该是白色的。

当前结果:整个屏幕都被分形占据,就好像我正在渲染到提供 fbo 的窗口以及我的自定义 fbo/纹理。

我真的不知道我做错了什么,所以我会很感激任何帮助。

编辑:

片段着色器:

FBO 初始化:

渲染循环:

我希望这有帮助。如果您想了解更多关于我在做什么的信息,请告诉我。

我还注意到发生了一些非常奇怪的事情。

如果在绑定 FBO 后,我尝试

...它是实际发生清除的窗口提供的帧缓冲区。

谢谢你们的帮助。

0 投票
1 回答
716 浏览

opengl - 为什么从 FBO 解除绑定纹理会清除纹理?

我在渲染到纹理操作时遇到了一些麻烦。我创建了一个 FBO,附加纹理,渲染它,一切都很好,但是当我尝试将附加纹理更改为 0 或新句柄时,glFramebufferTexture2DEXT再次调用,我附加的纹理变为空白(所有像素值重置为 (0, 0, 0, 0))。

文档并没有说这应该发生,这对我来说有点麻烦,因为我需要保留这个纹理中的信息。有谁知道为什么会发生这种情况,以及如何预防或解决它?

0 投票
1 回答
2502 浏览

opengl-es - FBO 离屏渲染缓慢

我想使用 openGL es 2.0 和 GLSL 着色器使用屏幕外渲染
我设置了 FBO,它似乎工作除了有两个问题

1)程序运行大约 30 fps,但突然间,它下降到 20 fps,然后又回到 30 fps,然后几秒钟后,又下降到 20 fps,然后又回到 30 fps 等等......(继续像那样)而且我不知道是什么导致了这种随机暂停/延迟
2)当我关闭应用程序时,它有一段时间没有响应。换句话说,似乎有一些数据需要清理或一些延迟......所以当我关闭程序时,它直到几秒钟后才会这样做。

难道我做错了什么?无论如何我可以解决这些问题吗?
这是我的代码:

我的初始化函数:

我的绘图功能:

0 投票
3 回答
1835 浏览

c++ - 渲染到纹理问题

我很想渲染到纹理工作,但是遇到了一些麻烦。我正在尝试在屏幕上渲染一个简单的四边形,以确保一切正常。

当我正常将四边形绘制到屏幕上时,四边形按预期呈现。但是,当我在启用渲染目标的情况下绘制四边形时,四边形会在屏幕的左下角渲染,最终不会渲染到目标。

0 投票
0 回答
1121 浏览

opengl - 具有多重采样和深度/模板的 FBO + RTT

我目前正在使用 MRT 通过 FBO+RTT 进行渲染,我正在研究通过多重采样(而不是超级采样)实现抗锯齿的可能性,但我对规范有点困惑(我参考 opengl 规范 4.2 - 所以 FBO 中的多重采样纹理是支持)以及我读过的内容..特别是:

1)

如果我做对了,我有 2 个选项:a) 通过多重采样渲染缓冲区进行多重采样,或 b) 使用多重采样纹理进行多重采样(并像我现在一样继续使用 RTT),现在:

两种方法都产生相同的输出吗?

2)

我使用 RTT,因为我需要 4 个颜色附件进行多通道渲染。在第一个场景被渲染为纹理后,该纹理随后被馈送到不同的片段着色器,这些着色器通过普通的 sampler2D 访问其数据。

我应该使用渲染缓冲区而不是纹理,片段着色器是否可以访问渲染缓冲区的数据?

3)

我在规范中读到,附加了多采样渲染缓冲区的 FBO 不需要深度/模板,因为该信息保存在多采样渲染缓冲区中

这是否意味着附加了多重采样渲染缓冲区的每个颜色附件都有自己的深度/模板?

在 FBO 中将多重采样纹理作为 RT 怎么样?我不认为他们存储任何深度/模板信息..我是对的吗?如果我使用 FBO+多重采样纹理实现多重采样,我还需要 DEPTH_STENCIL_ATTACHMENT 吗?如果是这样,那么在深度上进行多重采样呢?

4)

我只需要 1 个纹理/渲染缓冲区来抗锯齿,而另一个必须保持其锯齿状边缘。我在规范中读到使用 FBO 和多重采样,每个附加的可渲染必须具有相同数量的样本(尽管大小可能不同) .

有没有办法只对 2 个 RT 中的 1 个进行多重采样?这是关于 teximage2DMultisample (fixedsampledlocation) 中最后一个参数的规范所说的:

这是否意味着固定样本位置的多重采样纹理将保持多重采样格式,但实际上表现为常规(非多重采样)纹理?(即:每个样本位置都将具有相同的值)?

0 投票
1 回答
1718 浏览

opengl - 多重采样 FBO 深度/模板和 OpenGL 规范

OpenGL 4.2 规范(第 3.3.1 节)明确指出:

因为每个样本都包含颜色、深度和模板信息,所以颜色(包括纹理操作)、深度和模板函数的执行与单样本模式等效。 一个额外的缓冲区,称为多采样缓冲区,被添加到帧缓冲区。 像素样本值(包括颜色、深度和模板值)存储在此缓冲区中。样本包含每个片段颜色的单独颜色值。 当帧缓冲区包含多重采样缓冲区时,它不包含深度或模板缓冲区,即使多重采样缓冲区不存储深度或模板值。但是,颜色缓冲区确实与多样本缓冲区共存。

但是,如果我需要深度/模板测试,我必须设置一个 depth_stencil 多采样渲染缓冲区。

这是否违反规格或我错过了什么?

0 投票
1 回答
7229 浏览

android - Android opengl 1.1 渲染到纹理 1286 错误(帧缓冲区操作无效)

我正在尝试在我的 android 游戏中实现运动模糊效果。

经过大量研究,我发现最好的方法是使用帧缓冲区对象将前一帧保存为纹理,并将其渲染到当前帧的顶部。所以看到了一些关于如何做类似事情的不错的教程,我最终得到了这段代码,它基本上**在纹理上渲染我的场景,然后将纹理绘制到默认帧缓冲区。

它只在 gl.glGetError() 中绘制一个带有 1286 (Invalid framebuffer operation) 错误的白色纹理**

已解决:问题似乎是 Jean 所说的两个纹理维度的非幂等