C++ 远程屏幕外渲染(Linux/无GUI)

C++ 远程屏幕外渲染(Linux/无GUI),c++,linux,opengl,glut,off-screen,C++,Linux,Opengl,Glut,Off Screen,情况如下: 有一个远程Linux服务器(没有GUI),用于构建OpenGL场景。 目标:将生成的映像传输到客户端windows计算机 我无法理解屏幕外渲染的某些内容,阅读了大量的文献,但仍然没有很好地理解: 使用GLUT意味着设置变量显示。如果我正确理解,这意味着通过x11进行远程渲染。如果我在windows(XWin服务器)机器上运行x11服务器,一切正常。如果我尝试在不使用渲染服务器的情况下运行,则:freeglut(./WFWorkspace):无法打开显示“localhost:11.0”

情况如下: 有一个远程Linux服务器(没有GUI),用于构建OpenGL场景。 目标:将生成的映像传输到客户端windows计算机 我无法理解屏幕外渲染的某些内容,阅读了大量的文献,但仍然没有很好地理解: 使用GLUT意味着设置变量显示。如果我正确理解,这意味着通过x11进行远程渲染。如果我在windows(XWin服务器)机器上运行x11服务器,一切正常。如果我尝试在不使用渲染服务器的情况下运行,则:freeglut(./WFWorkspace):无法打开显示“localhost:11.0”。无论如何,x11不适合

  • 是否需要创建图形上下文(需要硬件渲染支持)

  • 在没有GLUT/x11的情况下,如何在Linux服务器上创建图形上下文

  • 帧缓冲区对象-它是否适合我的任务以及是否需要图形上下文

  • 解决此问题最有效的方法是什么(渲染需要硬件支持)

  • 这不是一个重要问题,但是:

    • 像素缓冲区对象。我计划使用它来提高GPU内存的读取性能。在我的任务范围内是否有利可图

    您需要修改程序以使用OSMesa-它是Mesa用于软件渲染的“空显示”驱动程序。以近似重复问题为起始点考虑这个答案:

    有关完整示例,您可以查看Mesa分布本身中的示例,例如:

    更新


    VirtualGL()似乎支持OpenGL/GLX协议的远程渲染,并通过VNC向客户端提供渲染的pixmaps(因此,VNC头可以简单地虚拟化)。

    您需要修改程序以使用OSMesa-它是Mesa用于软件渲染的“空显示”驱动程序。以近似重复问题为起始点考虑这个答案:

    有关完整示例,您可以查看Mesa分布本身中的示例,例如:

    更新


    VirtualGL()似乎支持OpenGL/GLX协议的远程渲染,并通过VNC向客户端提供渲染的pixmaps(因此,VNC头可以简单地变成虚拟的)。

    如果要使用完整的OpenGL规范,请使用X11创建上下文。以下是一个教程,演示如何执行此操作:

    如果要使用完整的OpenGL规范,请使用X11创建上下文。以下是一个教程,演示如何执行此操作:

    但如果我正确理解,没有硬件加速:。。。“独立Mesa是Mesa的原始化身。在运行X Window系统的系统上,它通过Xlib API进行所有渲染:支持GLX API,但它实际上只是对真实事物的模拟。GLX wire协议不受支持,并且X服务器没有加载OpenGL扩展。没有硬件加速。OpenGL库libGL.so包含所有内容(编程API、GLX函数和所有渲染代码)。“…那又如何?它似乎完全可以实现您想要的功能:远程GLX加速渲染服务器。感谢您的想法。我会检查它。我的主要目标是:性能(渲染和数据传输).但如果我理解正确,就没有硬件加速:…“单机版Mesa是Mesa的原始化身。在运行X Window系统的系统上,它通过Xlib API进行所有渲染:支持GLX API,但它实际上只是对真实事物的模拟。GLX wire协议不受支持,并且X服务器没有加载OpenGL扩展。没有硬件加速。OpenGL库libGL.so包含所有内容(编程API、GLX函数和所有渲染代码)。“…那又如何?它似乎完全可以实现您想要的功能:远程GLX加速渲染服务器。感谢您的想法。我会检查它。我的主要目标是:性能(渲染和数据传输)。发布链接有助于提供背景信息,但您也应总结链接内容。如果链接断开,答案仍然有用。发布链接有助于提供背景信息,但您也应总结链接内容。如果链接断开,答案仍然有用。相关:相关: