标签: framebuffer

7
推荐指数
2
解决办法
9590
查看次数

OpenGL ES 2.0 FBO创建错误,未知错误

我一直在努力解决这个问题,而且这个代码对我来说不明原因崩溃了.我正在创建一个FBO,绑定一个纹理,然后第一个glDrawArrays()在我的iPhone模拟器上崩溃了"EXC_BAD_ACCESS".

这是我用来创建FBO的代码(并绑定纹理和......)

glGenFramebuffers(1, &lastFrameBuffer);
glGenRenderbuffers(1, &lastFrameDepthBuffer);
glGenTextures(1, &lastFrameTexture);

glBindTexture(GL_TEXTURE1, lastFrameTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 768, 1029, 0, GL_RGBA, GL_UNSIGNED_SHORT_5_6_5, NULL);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

//Bind/alloc depthbuf
glBindRenderbuffer(GL_RENDERBUFFER, lastFrameDepthBuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 768, 1029);

glBindFramebuffer(GL_FRAMEBUFFER, lastFrameBuffer);

//binding the texture to the FBO :D
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, lastFrameTexture, 0);

// attach the renderbuffer to depth attachment point
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, lastFrameDepthBuffer);

[self checkFramebufferStatus];
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它参与了一个对象,checkFrameBufferStatus如下所示:

GLenum status = glCheckFramebufferStatus(GL_FRAMEBUFFER);
switch(status)
{
  case GL_FRAMEBUFFER_COMPLETE:
    JNLogString(@"Framebuffer complete.");
    return TRUE; …
Run Code Online (Sandbox Code Playgroud)

iphone opengl-es framebuffer ipad

7
推荐指数
1
解决办法
3566
查看次数

glClear之后的OpenGL无效帧缓冲操作(GL_COLOR_BUFFER_BIT);

每次打完电话后glClear(GL_COLOR_BUFFER_BIT);,我都会收到OpenGL错误"无效的帧缓冲操作".

电话似乎工作正常,似乎没有错.我glClear(GL_COLOR_BUFFER_BIT);::paintGL()方法中首先调用.

咦?我应该忽略这个错误吗?

opengl error-handling qt framebuffer osx-lion

7
推荐指数
1
解决办法
8547
查看次数

python的帧缓冲模块

我正在寻找一个可以直接显示jpgpng归档的python模块/dev/fb0.

我希望模块可以调用并在屏幕上显示图片,如下所示:

show_photo(path_to_jpg, x, y, dev='/dev/fb0')
Run Code Online (Sandbox Code Playgroud)

我在google上搜索了这样的python模块好几天了,我找到了链接:[Module] Python Frame Buffer,但找不到网站.

现在,我正在使用C程序并按os.system()函数调用,而且速度太慢.是否有一个python模块可以直接将图片显示到帧缓冲区,并支持静态图片,字幕?如果模块也支持播放视频文件会更好mplayer.

python framebuffer

7
推荐指数
1
解决办法
1万
查看次数

如何在Mono中访问Linux Framebuffer(Mono.Cairo/GTK#)?

我开始在Mono框架下为Linux编写一个小应用程序,该应用程序本质上是一个小型的kiosk前端,用户交互非常少.这是为了替换基于100%文本/控制台的同一应用程序的先前版本.

由于这将在Raspberry Pi上运行,我想避免运行X并让我的应用程序直接与Framebuffer通信.我开始使用Mono框架和C#作为我的开发语言,因为我非常了解C#.在这种情况下,可移植性不是问题.

我在查找适当的库和绑定时遇到了一些麻烦,让我从Mono访问Framebuffer.这些GTK#库都明确绑定到X11接口,无论如何,在Debian Wheezy中似乎没有为ARM Soft-Float(armel)架构预构建的GtkFB库.

Mono.Cairo库公开了一个DirectFBSurface类型,但是该表面的构造函数有两个IntPtr参数而没有记录,因此我不知道应该将什么传递给构造函数以正确初始化Framebuffer作为Cairo Surface.

有没有人使用Mono和C#与Linux Framebuffer交谈,如果是这样,你能提供基本的例子来初始化并开始绘制到FB,或者指向在线文档来提供帮助吗?

更新1

我想我会尝试null使用以下代码为两个构造函数参数实例化DirectFBSurface :

public static void Main(string[] args)
{
    // ...
    DirectFBSurface surface = new DirectFBSurface(((IntPtr)null), ((IntPtr)null));
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我希望这会生成一个异常,表明null不允许参数值,但是看起来好像DirectFBSurface没有实现Mono.Cairo或没有编译到Debian Wheezy(armel)附带的库中:

Unhandled Exception: System.EntryPointNotFoundException: cairo_directfb_surface_create
  at (wrapper managed-to-native) Cairo.NativeMethods:cairo_directfb_surface_create (intptr,intptr)
  at Cairo.DirectFBSurface..ctor (IntPtr dfb, IntPtr dfb_surface) [0x00000] in <filename unknown>:0
  at Info.Insch.SandBox.TestCairo.Program.Main (System.String[] args) [0x00000] in <filename unknown>:0
Run Code Online (Sandbox Code Playgroud)

所以看起来这种Mono.Cairo方法可能无法满足我的需求,如上所述,GTK#Framebuffer库似乎不是Armel的Debian Wheezy的一部分.是否有另一组库可用于从Mono访问Linux Framebuffer?

c# mono framebuffer gtk# cairo

7
推荐指数
1
解决办法
2092
查看次数

直接访问linux framebuffer - copyarea

我想在嵌入式Linux应用程序中快速移动一个矩形到帧缓冲区.我发现这个功能cfb_copyarea可能很有用.但我无法在/ dev/fb设备上找到任何ioctl来调用该函数.或者可以直接调用此函数吗?

linux embedded kernel framebuffer

6
推荐指数
2
解决办法
7713
查看次数

Framebuffer FBO渲染到纹理非常慢,在Android上使用OpenGL ES 2.0,为什么?

我正在使用opengl es 2.0编写Android 2d游戏.在我将精灵绘制到后备缓冲区后,我将灯光绘制到FBO并尝试将其再次混合到后台缓冲区.当我将FBO绘制到帧缓冲区时,即使没有任何颜色也没有任何颜色,帧率在三星Galaxy w上从60降到30(它有一个adreno 205作为gpu).我到处搜索并尝试了一切,即使我在场景中绘制了一个精灵并将一个透明的FBO纹理混合到帧速率下降的屏幕上.我在手机上尝试了其他带有灯光效果的游戏,它们运行良好,几乎所有游戏都可以在手机上运行,​​我相信它们也使用了帧缓冲.在Galaxy SII(mali 400 gpu)运行正常,我对opengl很新,所以我相信我在某个地方犯了错误,我分享了我的代码.

// Create a framebuffer and renderbuffer
GLES20.glGenFramebuffers(1, fb, offset);
GLES20.glGenRenderbuffers(1, depthRb, offset);

// Create a texture to hold the frame buffer
GLES20.glGenTextures(1, renderTex, offset);
GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, renderTex[offset]);

GLES20.glTexImage2D(GLES20.GL_TEXTURE_2D, 0, GLES20.GL_RGBA,
                    screenWidth, screenHeight, 0,
                    GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE,
                    null);


GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S,
                       GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T,
                       GLES20.GL_CLAMP_TO_EDGE);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MAG_FILTER,
                       GLES20.GL_LINEAR);
GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_MIN_FILTER,
                       GLES20.GL_LINEAR);

//bind renderbuffer
GLES20.glBindRenderbuffer(GLES20.GL_RENDERBUFFER, depthRb[offset]);

GLES20.glRenderbufferStorage(GLES20.GL_RENDERBUFFER, GLES20.GL_DEPTH_COMPONENT16,
                             screenWidth, screenHeight);

// bind the framebuffer
GLES20.glBindFramebuffer(GLES20.GL_FRAMEBUFFER, fb[offset]);

// specify texture as color attachment
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0,
                              GLES20.GL_TEXTURE_2D, renderTex[offset], …
Run Code Online (Sandbox Code Playgroud)

android 2d framebuffer render-to-texture opengl-es-2.0

6
推荐指数
1
解决办法
2万
查看次数

获取最大数量的帧缓冲颜色附件?

我正在开发一个OpenGL应用程序,我需要找到支持多少帧缓冲颜色附件.有没有办法查询OpenGL的值?

opengl framebuffer

6
推荐指数
2
解决办法
3272
查看次数

OpenGL 直接到 Linux 帧缓冲区,无需 X-Server

我有一个使用 GLUT 开发的小型 OpenGL 应用程序。在没有 X-Server 的情况下,使用 OpenGL 直接渲染到 Linux 帧缓冲区 (fbdev) 的最佳选择是什么?我知道 GLUT 需要 X,所以我不是在寻找在没有 X 的情况下使用 GLUT 的方法。

我打算使用的帧缓冲设备已确认与fbi和一起使用mplayer

我已经完成(或者我认为我已经完成了)一项非常详尽的研究,并找到了一些可能有用的资源和库。但大部分信息都有些过时,我不确定该相信什么。

因此,虽然很多 SO 答案都提到 DirectFB 和 Mesa 作为解决方案,但我无法让自己对这些选项充满信心,因为可以找到的材料很少。

所以,如果你能在这里指出我正确的方向,给我任何例子,我将不胜感激。我错过了什么?


由于问题被标记为重复而进行编辑:

相关问题的答案建议使用 DRM。我打算在尚不支持主线 Linux 内核的基于 Allwinner H3 的嵌入式计算机上运行我的代码。目前,它在内核版本 3.14 上运行,我认为它不支持 DRM。

那么,有没有其他选择?

linux opengl framebuffer directfb mesa

6
推荐指数
0
解决办法
2800
查看次数

如何使用Linux FrameBuffer旋转Qt5应用程序?

我有一个直接在linux帧缓冲区(没有x-Windows)上运行的嵌入式linux应用程序。现在,我们必须将显示器物理旋转180度。如何使我的Qt应用程序旋转以使其不会倒挂?我看到了使用以下选项的参考:

 -platform linuxfb:fb=/dev/fb0:rotation:180 
Run Code Online (Sandbox Code Playgroud)

但是,旋转选项似乎被忽略了。

在Ubuntu服务器16.04.6上使用Qt 5.9.2

linux qt framebuffer qt5 ubuntu-16.04

6
推荐指数
1
解决办法
396
查看次数