问题标签 [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 投票
1 回答
687 浏览

c# - 为什么我会得到一个带有帧缓冲区的白色方块?

我正在尝试将帧缓冲区的使用添加到我的 OpenGL (OpenTK) 项目中。

进入我一开始添加的初始化方法:this.RenderBufferTex = GL.GenTexture();

this.glc是场景运行的 GLControl。

在渲染之前我添加了

其次是 GL.Clear() 和我所有用于绘制场景的旧代码。

然后是显示渲染场景的方法:

我从中得到的结果是一个白色的正方形填充了我的屏幕左侧(所以它看起来是我的屏幕高度的正方形)。

我究竟做错了什么?

0 投票
1 回答
368 浏览

arm - 基于 ARM 平台的 X windows

我正在使用基于手臂的参考平台。在那我有VGA显示器。如果我想为那个平台开发一个图像查看器软件,我需要学习 X windows 编程吗?请提供您的宝贵意见。这是否涉及帧缓冲区概念?rgds, 亚杰

0 投票
1 回答
2109 浏览

android - 在 Android 和 OpenGL ES 2.0 中将纹理保存到文件

据我了解,将纹理发送到 OGLES2 是使用 完成的GLUtils.texImage2D,即我将纹理上传到 GPU。那么如何将其发送回 Android(从 GPU 下载)?

谢谢!

0 投票
3 回答
2871 浏览

performance - glReadPixels() 读取 GL_DEPTH_COMPONENT 很慢

我的应用程序依赖于从帧缓冲区读取深度信息。我已经用 glReadPixels(0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, &depth_data) 实现了这个

然而,这运行速度非常慢,它使我的应用程序从平稳的 30fps 变为滞后的 3fps。如果我尝试读取其他维度或数据,它会在可接受的水平上运行。

概述:

  • 没有 glReadPixels -> 每秒 30 帧
  • glReadPixels(0, 0, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth_data); -> 每秒 20 帧,可接受
  • glReadPixels(0, 0, 宽度, 高度, GL_RED, GL_FLOAT, &depth_data); -> 每秒 20 帧,可接受
  • glReadPixels(0, 0, 宽度, 高度, GL_DEPTH_COMPONENT, GL_FLOAT, &depth_data); -> 每秒 3 帧,不可接受

与其他调用相比,为什么最后一个调用如此缓慢?有什么办法可以补救吗?

宽度 x 高度大约为 100 x 1000,随着尺寸的增加,调用变得越来越慢。

我也尝试过使用像素缓冲区对象,但这对性能没有显着影响,它只会将缓慢延迟到 glMapBuffer() 调用。

(我已经在 MacBook Air nVidia 320m graphics OS X 10.6 上对此进行了测试,奇怪的是,我的旧 MacBook Intel GMA x3100 读取深度缓冲区的速度约为 15 fps。)

更新:将 GLUT_MULTISAMPLE 排除在 glutInitDisplayMode 选项之外,让应用程序再次恢复到平滑的 20fps 带来了天壤之别。我不知道该选项首先是做什么的,谁能解释一下?

0 投票
1 回答
3895 浏览

linux - 用于嵌入式 Linux 的全功能 HTML 渲染引擎,例如 WebKit/Gecko?

我想在 Linux 环境下使用 HTML+CSS+JavaScript 开发触摸屏设备的用户界面,需要合适的渲染引擎。

有问题的设备将有一个 400 到 900 MHz 时钟的 ARM CPU、一个 VGA 或 WVGA 显示器和大约 256 MB 或更多的标准 Debian Linux(最小安装)。

理想情况下,渲染引擎将直接访问 /dev/fb0 和鼠标事件。由于浏览器只是用作渲染引擎,我不需要/想要任何 GUI - 没有窗口、没有选项卡、没有对话框,只有一个大量使用 JavaScript 与用户交互的全屏 HTML 页面(如动态网页)。

如果可以避免 Qt / GTK / DirectFB 等(以减少内存开销和启动时间),那就太好了,但当然这不是绝对必要的。

当然,WebKit 和 Gecko 出现在我的脑海中,但它们都难以理解和编译。也许众多分叉中的一个接近我需要的(我搜索但到目前为止没有运气)?

0 投票
1 回答
4270 浏览

opengl - 渲染到屏幕外缓冲区然后渲染到纹理时如何使用深度测试

我正在将我的场景渲染为纹理。除了深度测试不起作用之外,这很好用。如果渲染到屏幕外纹理,如何启用深度测试?我正在使用 FrameBuffer 类http://www.opengl.org/news/comments/framebuffer_object_fbo_c_class_available_with_example_application/

0 投票
1 回答
3757 浏览

iphone - 对于某些纹理大小,glFramebufferTexture2D 在 iPhone 上失败

当我尝试将纹理附加到帧缓冲区时,glCheckFramebufferStatus 报告某些纹理大小的 GL_FRAMEBUFFER_UNSUPPORTED。我已经在第 2 代和第 4 代 iPod Touch 上进行了测试。两个模型之间失败的纹理大小不相同。

以下是一些有趣的结果:

第二代 - 8x8 失败,16x8 失败,但 8x16 成功!

第 4 代 - 8x8 成功,8x16 成功,但 16x8 失败!

这是我用来测试附加不同大小纹理的一些代码:

似乎只要两个尺寸至少为 16 像素,那么两个设备上的一切都可以正常工作。不过,困扰我的是,我还没有看到任何关于附加到帧缓冲区对象的纹理大小要求的文章。目前,一种解决方案是将我的纹理大小限制为至少 16 像素,但这可能会在未来中断或已经在我未尝试过的某些设备上中断?我也可以在启动时执行此测试代码,以便动态确定允许哪些纹理大小,但这似乎有点做作。

0 投票
1 回答
413 浏览

qt4 - 在 Qt/Embedded 中将 QWSWindow 的表面放置在 QGLWidget 上

我正在尝试为嵌入式 Linux 的 Qt 编写一个 QScreen 驱动程序,以便能够在帧缓冲区上集成 OpenGL 功能。目前,我的驱动程序在屏幕上同时拥有两个 QWS 窗口和 EGL 表面。我使用方法exposeRegion、blit 和solidFill 的默认实现。不幸的是,我注意到如果我尝试在 EGL 表面上放置 QWS 窗口,我会发现 EGL 表面总是在 QWS 窗口之上。

当 EGL 表面不是顶层窗口时,是否有可能以某种方式允许 QWS 窗口越过 EGL 表面?我怎样才能做到这一点?

我知道 OpenGL 直接绘制到屏幕上,但我认为中断刷新过程应该允许 QScreen 驱动程序在其上绘制窗口,但这似乎没有发生。

谢谢!

0 投票
1 回答
1223 浏览

iphone - iPhone opengl ES 将帧缓冲区复制到渲染缓冲区中

嘿伙计们,

我正在用opengl es制作动画。动画应该绘制正方形。这已经可以了,但是如何将帧缓冲区中的内容复制到渲染缓冲区中,问题是每一帧只有一个正方形在显示器上。

当我在模拟器中测试它并且它工作时。对于每个新帧,都会绘制一个已知的正方形,而其他已经绘制的正方形仍在屏幕上。但是当我在设备上测试它时它没有工作。屏幕只是在闪烁。

我认为发生这种情况是因为我的 Mac 和其他所有计算机一样使用双缓冲,而 iPhone 没有。

请帮我。

这就是我设置帧缓冲区的方式:

我还写了一个 setupView Methode:

这是我的 drawView 方法:

const GLfloat squareVertices[] = { -1.0f, 1.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, -1.0f, 0.0f, -1.0f, -1.0f, 0.0f };

0 投票
1 回答
1087 浏览

usb - udev 和 usb 帧缓冲设备

我想为某个 USB 帧缓冲设备 (DisplayLink) 获取一个固定的设备名称。使用供应商 ID,我可以使用 udev 规则获得匹配:SUBSYSTEM=="usb", ATTRS{idVendor}=="17e9", GROUP="video"

但是使用 SYMLINK+="fbdl" 我没有获得到 /dev/fbX 设备(X=1,2,3..)的符号链接,而是到 bus/usb/... - 这是不一样的:使用这个设备文件(链接)在 xorg.conf 中不起作用。设置 NAME 而不是 SYMLINK 是相同的:真实设备 /dev/fbX 停留在那里并工作,给定的 NAME 是另外创建的,但是是其他一些目标(不起作用)。这里发生了什么??如果像 /dev/input/eventX 和 SYMLINK 一样,你会得到一个指向那个 eventX 的链接。为什么不在这里?

谢谢!(Ubuntu 11.04)