问题标签 [framebuffer]

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 投票
3 回答
5363 浏览

python - OpenGL中的透明FrameBuffer背景

我想使用 glClear 和 glClearColor 用包括 alpha 透明度的颜色填充帧缓冲区。但是,当绑定到渲染到屏幕的纹理时,帧缓冲区始终呈现为不透明。

我希望渲染到帧缓冲区的所有内容都保持透明度。我只是想改变背景。

请参阅以下代码:

surface.background_alpha 应该是帧缓冲背景的透明度。这是我的初始化代码:

代码有点乱,因为我做了很多调整才能让事情正常工作,而且我还没有把所有的东西都整理好。

如果有人可以帮助我,我非常感谢你。

0 投票
1 回答
540 浏览

iphone - 我应该如何组织 OpenGL ES 1.x 2D 层树?

我正在开发一个可爱的益智应用程序 - http://gotoandplay.freeblog.hu/categories/compactTangram / - ,出于性能原因,我决定使用 OpenGL 渲染视图。我开始学习它,我对缓冲区、顶点、纹理以非常基本的方式感到满意。

情况: 游戏中用户操作7个puzzlePiece,每个有5个子层,以获得一些漂亮的灯光感觉。大多数纹理是 256x256。用户一次只操作一件,所以在玩的过程中其余部分保持不变。这里没有任何图形的应用程序骨架:http: //gotoandplay.freeblog.hu/archives/2009/11/11/compactTangram_v10_-_puzzle_completement_test/

问题: 我应该如何组织它们?在单独的帧缓冲区(?)/纹理(?)中“预绘制”实际片段状态是一个好主意,或者我可以在一个时间步内简单地重绘每个片段/层(1 + 7 * 5 = 36 sprite)?如果我使用“predraw”,那我该怎么办?绘制到 puzzePiece 帧缓冲区?那么如何将它绘制到场景帧缓冲区中呢?或者有没有更简单的方法来“合并”纹理?

希望你能理解我的问题,如果它看起来太暗淡,请在我的博客中看看我关于如何渲染实际作品的想法(我将要做的事情有一个简单的 flash 实现)在这里:http://gotoandplay .freeblog.hu/archives/2010/01/07/compactTangram_072_-_tan_rendering_labs/

0 投票
2 回答
1747 浏览

iphone - 如何将五个 OpenGL 纹理合并为一个?

我想在 OpenGL ES 1.x iPhone 中将5 个“子层”合并到一个纹理(你知道,就像 Photoshop 中的 Flatten Image 一样)。我是 OpenGL 的新手,只是还没有找到答案。

0 投票
1 回答
952 浏览

python - OpenGL 帧缓冲区缓慢且自发停止。广泛使用时甚至会导致系统崩溃

显然,帧缓冲区速度很快,并且是在屏幕外渲染纹理或简单地预先创建事物的最佳方式。

然而,我的游戏根本不喜欢它们。在当前的代码中,经常使用帧缓冲区,有时每帧多次使用。使用时,游戏开始变慢,但不是立即变慢。这似乎需要时间(也许是内存累积问题?)。在某些区域,帧缓冲对象似乎并没有让游戏减速太多,偶尔游戏会停止几秒钟,然后才能正常继续。

我认为帧缓冲区是问题所在,因为游戏在不使用它们的区域速度很快。

我正在使用 python 和 pyopengl。OpenGL 代码类似于其他语言的代码,所以我认为 Python 知识并不重要。

有些东西直接渲染到屏幕上,其他纹理渲染到 Surface 类所涉及的其他纹理。这类似于 pygame,这是我在改变主意之前开始玩游戏的地方。

这是相关的代码。

如果有人能帮我解决这个问题,那就太棒了。我花了很长时间让 FBO 开始工作。令人沮丧的是,它们无法正常工作。如果要删除它们,那又是一场噩梦。但我必须面对任何需要做的事情才能让比赛变得更快。

0 投票
3 回答
21985 浏览

opengl - opengl - 与帧缓冲区的先前内容混合

我正在通过帧缓冲区对象渲染到纹理,当我绘制透明图元时,这些图元与在该单个绘制步骤中绘制的其他图元正确混合,但它们没有与帧缓冲区的先前内容正确混合。

有没有办法将纹理的内容与传入的新数据正确混合?

编辑:要求提供更多信息,我将尝试更清楚地解释;

我使用的混合模式是 GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA。(我相信这通常是标准的混合模式)

我正在创建一个跟踪鼠标移动的应用程序。它绘制将前一个鼠标位置连接到当前鼠标位置的线,并且由于我不想在每一帧再次绘制线,我想我会绘制到纹理,从不清除纹理,然后只用它绘制一个矩形纹理上显示它。

这一切都很好,除了当我在纹理上绘制 alpha 小于 1 的形状时,它不能与纹理的先前内容正确混合。假设我在纹理上绘制了一些带有 alpha = .6 的黑线。几个绘制周期后,我在这些线上绘制一个 alpha = .4 的黑色圆圈。圆圈“下方”的线条被完全覆盖。虽然圆圈不是纯黑色(它与白色背景正确融合),但圆圈下方没有您所期望的“较暗的线条”。

但是,如果我在同一帧中绘制线条和圆圈,它们会正确融合。我的猜测是纹理与之前的内容不融合。就像它只与 glclearcolor 混合一样。(在这种情况下是 <1.0f, 1.0f, 1.0f, 1.0f>)

0 投票
4 回答
511 浏览

c++ - X11 中是否可以使用全屏 8 位帧缓冲区,如果可以,我做错了什么?

我正在尝试获得一个全屏 8 位深度帧缓冲区,但我找不到任何可以使用的视觉效果。我想要 8 位真彩色,其中 3 位是红色,3 位是绿色,2 位是蓝色。我正在使用 XF86 来全屏显示。

这是不可能的还是我做错了什么?

0 投票
1 回答
1195 浏览

android - Nexus One GL_FRAMEBUFFER_OES 扩展...实际上不存在?

我正在将 iPhone 应用程序移植到 Android,我需要使用 OpenGL 帧缓冲区。我有一个 Nexus One,调用 glGet(GL_EXTENSIONS) 显示 Nexus One 支持与 iPhone 相同的帧缓冲区扩展。但是,我似乎无法在我的 GLSurfaceView 中调用与 OpenGL 扩展相关的函数。当我调用一个简单的帧缓冲区获取函数时,我得到一个 UnsupportedOperationException。

我似乎无法解决这个问题,我必须有帧缓冲区才能继续开发。在创建 OpenGL 上下文时是否需要传递一些选项以获得功能齐全的 OpenGL 上下文对象?这是我尝试运行的代码块,它决定了硬件的功能。它声称支持扩展并且我的 gl 对象是 GL11ExtensionPack 的一个实例,但是对 glGetFramebufferAttachmentParameterivOES 的调用失败并出现 UnsupportedOperationException。

如果有人成功使用了 GL_FRAMEBUFFERS_OES 扩展,请告诉我。我开始认为它可能只是没有在 Java API 中实现!

0 投票
2 回答
43982 浏览

opengl - OpenGL中Framebuffer和Renderbuffer的概念和区别是什么?

我对 Framebuffer 和 Renderbuffer 的概念感到困惑。我知道它们需要渲染,但我想在使用前了解它们。

我知道需要一些位图缓冲区来存储临时绘图结果。后台缓冲区。当这些绘图正在进行时,需要在屏幕上看到另一个缓冲区。前缓冲区。翻转它们,然后再次绘制。我知道这个概念,但很难将这些对象与这个概念联系起来。

它们的概念和区别是什么?

0 投票
1 回答
372 浏览

iphone - 是否可以恢复以前的 GL 帧缓冲区?

我正在开发一个允许用户使用 GL 绘图的 iPhone 应用程序。我使用 GLPaint 示例代码项目作为坚实的基础,但现在我想添加用户加载他们以前的绘图之一并继续处理它的能力。

我知道如何获取帧缓冲区内容并将其保存为 UIImage。有没有办法让我获取 UIImage 并告诉 GL 绘制它?

任何帮助深表感谢。

0 投票
1 回答
1326 浏览

python - 实现 pyglet 会破坏我曾经工作的帧缓冲区 OpenGL 代码

这个问题重复了我之前的问题,但是我之前的问题是失败的,因为我没有正确复制一些重要信息,所以我必须重做。

我在调用 OpenGL 函数时遇到错误。也许 pyglet 没有正确初始化 OpenGL?该错误发生在以前有效的简单函数中:

错误是:

glBindFramebufferEXT(GL_FRAMEBUFFER_EXT,surface.frame_buffer)ctypes.ArgumentError:参数2::错误类型

类型不对?那么现在 glGenFramebuffersEXT(1) 是否给出了错误的类型?为什么会这样?

在调用该函数之前,我初始化了一个管理我的游戏的类实例。这是初始化方法:

Surface 是我创建的一个类,它的行为有点像 pygame.Surface 类,但使用 OpenGL 纹理。

该方法设置了 Window 和 OpenGL(可能不正确,这是问题所在?),在调用它之后,我为我的游戏设置了一些东西,它使用 setup_framebuffer 函数渲染到纹理。然后调用 pyglet.app.run() 应该希望运行我的 game_loop 方法,因为我做了 self.window.set_handler('on_draw,self.game_loop) 但我的游戏在它到达那里之前就崩溃了。

这是我第一次使用 pyglet。该文档没有向我解释我做错了什么。任何人都可以帮忙吗?

谢谢你。