首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenGL: Mesa3D离屏软件渲染性能问题

OpenGL: Mesa3D离屏软件渲染性能问题
EN

Stack Overflow用户
提问于 2019-03-12 21:43:23
回答 1查看 317关注 0票数 0

我使用Yocto作为嵌入式系统,使用OpenGL 2.1、GLEW 2.0.0和Mesa17.0.2。我正在通过HD/SDI将屏幕外的软件渲染到监视器上。我的问题是我的更新速度大约是1赫兹。在我的开发机器上,当Debian上的硬件加速被禁用时,我有大约20FPS。嵌入式机器没有那么强大,所以我理解性能的影响,但1FPS似乎有点低。对于我的优化,我禁用了:

代码语言:javascript
复制
glDiasble(GL_LINE_SMOOTH)
glDiasble(GL_POINT_SMOOTH)
glDiasble(GL_SMOOTH)
glDiasble(GL_MULTISAMPLE)
glShadeModel(GL_NONE)

我没有任何剔除,因为我只使用2D图像。

但是,我将min和mag过滤器设置为GL_NEAREST。

我的缓冲区交换和上下文创建类似于:

代码语言:javascript
复制
        bool makeContext()
        {
            width = 1280;
            height = 720;

            context = OSMesaCreateContextExt(OSMESA_RGBA, 0, 0, 0, NULL);
            if(!context)
            {
              //...
              return false;
            }
            bufferSize = width * height * 4 * sizeof(GL_UNSIGNED_BYTE);
            frameBuffer = (char*)mallic(bufferSize);
            frameBuffer = (char*)0_buf_baseaddr;
            if(!OSMesaMakeCurrent(context, frameBuffer, GL_UNSIGNED_BYTE, width, height));
            {
               //...
               return false;
            }

            OSMesaPixelStore(OSMESA_Y_UP, 0)
            {
              //...
            }

            return true;
         }

void swapBuffers()
    {
      frameBuffer = (char*) swap_page(); //returns a spot in memory with update
      OSMesaMakeCurrent(context, frameBuffer, GL_UNSIGNED_BYTE, width, height);
    }

我正在考虑应用模板,但我不确定这是否会对性能有所帮助。我几乎可以肯定,这个问题源于我正在使用的图像大量使用Alpha通道。一个接一个的多个移动层达到了我想要的效果。

我的交换或创建有什么明显的问题吗?另外,基于我已经做的优化,我还能做些什么来帮助你呢?

EN

回答 1

Stack Overflow用户

发布于 2019-03-27 20:44:12

通过删除和梳理一些资源图像,我能够将性能提高约10%。主要是,让我的glClear作为最远的图像的颜色(少绘制一个资源),然后在顶部用alpha通道重叠我的图像。我的GUI在很大程度上依赖于alpha通道,所以即使少一个绘图调用也会对软件渲染产生影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55122964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档