我目前正在向OpenGL ES移植开源OpenGL游戏。目标设备运行Linux并且具有相对较弱的CPU(ARM11系列,具有FPU)。它有一个OpenGL ES加速器,但不是OpenGL加速器。
最初,我希望在另一台Linux机器上使用加速的OpenGL实例来运行现有的OpenGL-GLX-X11实现 - 例如,带有Radeon X1650 Pro的Athlon X2。这将有助于验证是否存在需要在较高级别进行整理的严重CPU瓶颈。
我已设法设置X11连接的SSH转发。 glxinfo和glxgears程序运行,但后者的性能非常差(8fps),而本地运行的glxgears(vsf的60fps)。 glxinfo报告指出正在使用Direct Rendering,它告诉我正在使用本地(到ARM设备)软件渲染器。
我想要发生的是将OpenGL命令发送到Athlon X2机器并使用Radeon加速。我相信我需要打开间接渲染。但是,设置LIBGL_ALWAYS_INDIRECT = 1不会改变任何内容。例如:
arm$ LIBGL_ALWAYS_INDIRECT=1 glxinfo | fgrep rendering
direct rendering: Yes
arm$
ARM设备正在运行Gentoo Linux。强迫我想要发生什么的最好方法是什么?
答案 0 :(得分:1)
glxinfo和glxgears程序运行,但后者的性能非常差(8fps),而本地运行的glxgears(使用vsync时为60fps)。 glxinfo报告指出正在使用Direct Rendering,它告诉我正在使用本地(到ARM设备)软件渲染器。
我对此感到有点困惑。如果您在远程显示器上看到OpenGL输出,那么这意味着不是传输GLX命令而是传输图像。但是,这意味着主机设备上的libGL.so对其输出有X11感知,但不会使用GLX。
您能否确定哪个软件包在您的ARM设备上提供libGL.so。我建议您安装一个单独的libGL.so,只生成GLX命令和LD_PRELOAD。
Mesa3D可以配置为构建GLX命令流生成器库。