jjzjj

Framebuffer

全部标签

Android OpenGL 以原始(小)分辨率渲染到 frameBuffer,然后将其缩放(viewPort)到屏幕尺寸

我有一个NV21(YUV420)摄像机视频,我正在对其应用fragment着色器以获得一些滤镜效果以及YUV到RGB的转换。除了性能不佳外,一切正常。我的fragment着色器有点重,因为它有很多textur2D()调用。原始帧分辨率为480x640像素,我注意到如果我将视口(viewport)设置为这个原始大小(而不是全屏大小),它运行良好且流畅。所以基本上我需要首先渲染帧并在frameBuffer(FBO)中以原始大小处理它,然后(在着色器工作完成后)使用视口(viewport)(主要是1080x1920)将它缩放到全屏大小,这意味着“繁重”的处理工作将应用于更少的fragment

android - 以编程方式在android中读取framebuffer/dev/graphics/fb0

我在android上工作。我正在开发一个应用程序,我需要在其中以编程方式访问android中视频的帧缓冲区/dev/graphics/fb0。我研究了很多,并且能够找到一个资源来解释它是如何实现的可以通过shell命令https://www.youtube.com/watch?v=BUPPyR6VasI来完成但我想以编程方式实现同​​样的目标。任何人都知道如何实现它。我真的很感激任何想法..谢谢 最佳答案 阅读enterlinkdescriptionhere,看起来fb0出于安全原因限制了权限——如果权限未关闭,应用程序可能会监视给

c++ - GL_DRAW/READ_FRAMEBUFFER 与 GL_FRAMEBUFFER?

我注意到现在有GL_DRAW/READ_FRAMEBUFFER扩展。目前我只是在使用GL_FRAMEBUFFER和glTextureBarrierNV。但是,我没有发现太多关于READ/WRITE扩展的信息,因此有一些问题。他们引入了什么OpenGL版本?与简单地使用GL_FRAMEBUFFER进行读写相比,它们有什么优势?我在哪里可以找到有关此的更多信息? 最佳答案 学究笔记:GL_DRAW/READ_FRAMEBUFFER未在扩展中引入;它们是OpenGL3.0的核心功能。是的,从技术上讲,此功能也在ARB_framebuffe

iOS OpenGL ES Analyzer 列出 "Non-Existent Framebuffer Attachment"和 "Missing Framebuffer Attachment",但 FBO 有效

我正在使用OpenGL帧缓冲区对象(FBO)在iOS上实现模板阴影。代码有效——也就是说,从视觉上看,模板缓冲区正在完成这项工作,而且性能似乎还不错。但是,当我通过OpenGLESAnalyzer仪器运行应用程序时,它会提示“不存在的帧缓冲区附件”和“缺少帧缓冲区附件”。我无法理解这些消息,因为FBO确实有颜色、深度和模板的附件。对glCheckFramebufferStatus()的调用返回GL_FRAMEBUFFER_COMPLETE,表示没有问题。这是Instrument的OpenGL分析器中的错误吗?另见thisthread,它没有给出答案,但提出了同样的问题。

ios - GL_APPLE_shader_framebuffer_fetch gl_lastFragData

Apple引入了一个名为GL_APPLE_shader_framebuffer_fetch的新着色器扩展,它允许完全可编程的混合。还有一个解释功能的wwdc视频。这是wwdc2012的视频513。遗憾的是,这个扩展对我不起作用。F着色器:#extensionGL_APPLE_shader_framebuffer_fetch:requirevaryinglowpvec4colorVarying;voidmain(void){gl_FragColor=gl_lastFragData[0]+vec4(colorVarying.x,colorVarying.y,colorVarying.z,1

c - Linux framebuffer像素位域通用实现

我正在编写一个小型库来与Linux的帧缓冲区抽象接口(interface)。我所有的图形卡都使用相同的像素格式(每个channel一个八位字节,四个channel,BGRA排序),到目前为止,库只采用这种格式。但是,如果我想让库在任何Linux帧缓冲区上工作,我必须使用帧缓冲区API提供的像素格式数据。您不需要知道帧缓冲区如何工作来回答这个问题(我希望),只是一些我不精通的小摆弄。这是我的标题中提供的像素格式信息:/*Interpretationofoffsetforcolorfields:Alloffsetsarefromtheright,*insidea"pixel"value,w

linux - linux framebuffer 驱动程序是视频卡驱动程序吗?

我对这些硬件的实际工作原理知之甚少,但现在我需要学习如何为Android设备编写Linux帧缓冲驱动程序。我对Linux图形堆栈感到困惑。据我了解,在台式计算机上,合成窗口管理器与DRM交互,然后将数据发送到特定的视频卡驱动程序。另一方面,有一些Controller通过DMA从GPU的内存中检索数据并将其发送到监视器,正如答案here所建议的那样。.也通过this的第29页中的图表书中,我认为帧缓冲驱动程序位于实际图形设备之上,因此它必须与特定的视频卡驱动程序交互,例如,nVidia驱动程序。但是当我谷歌写一个嵌入式设备的帧缓冲驱动程序时,结果显示好像驱动程序直接负责与LCD联系,所以

Linux Framebuffer 正确设置分辨率

我有一个RaspberryPi并且想在没有xserver的情况下全屏显示图像-所以直接将它写入帧缓冲区。这里没问题。但是设置为全屏是行不通的。cat/sys/class/graphics/fb0/modes产量:U:1024x768p-0U:1920x1200p-0U:1920x1080p-0U:608x684p-0所以我用fbset-xres1920-yres1200-match导致>>fbsetmode"1920x1200"geometry192012001920120016timings0000000rgba5/11,6/5,5/0,0/16endmode如果我现在使用fbi来显

c - 使用 linux framebuffer 进行适当的双缓冲

我想知道如何正确地对帧缓冲区进行双重缓冲以避免撕裂。我对这个主题做了很多研究,但似乎找不到任何东西。我试过FBIO_WAITFORVSYNC。但是根据这个线程:HowtoqueryVsyncphaseinLinux看来这行不通。我也试过使用FBIOGET_VSCREENINFO和FBIOPAN_DISPLAY每个线程:LinuxframebuffergraphicsandVSync.但由于此线程中讨论的错误而失败:invalidargumenterrorwhensettingyres_virtualinfb_var_screeninfo该线程建议使用不同的驱动程序(vesafb)来解决

c++ - 如何直接写入linux framebuffer?

如何直接写入linuxframebuffer? 最佳答案 查看FBIOPUT_VSCREENINFO、ioctl和mmap(我有代码但不在这台电脑上,抱歉)编辑:这应该让你开始//openfiledescriptorandgetinfoinffdScreen=open("devicename",O_RDWR);fb_var_screeninfovarInfo;ioctl(fdScreen,FBIOGET_VSCREENINFO,&varInfo);//setresolution/dpi/colordepth/..invarInfo,