据我所知,AMD创建了一个在x86 CPU上运行的OpenCL替代品implementation。从简化调试的角度来看,这是非常有用的。不幸的是,OpenCL不适合我。可在x86 CPU上运行的OpenGL代码?
是否有任何开放GL x86的实现存在?这当然会大大缓解我的开发过程,代价是CPU时间。之后我会在GPU上运行相同的代码,而无需进行任何更改。
据我所知,AMD创建了一个在x86 CPU上运行的OpenCL替代品implementation。从简化调试的角度来看,这是非常有用的。不幸的是,OpenCL不适合我。可在x86 CPU上运行的OpenGL代码?
是否有任何开放GL x86的实现存在?这当然会大大缓解我的开发过程,代价是CPU时间。之后我会在GPU上运行相同的代码,而无需进行任何更改。
Mesa可能是您的选择。
从他们的网站:
梅萨是几种类型由Intel,AMD和NVIDIA,加上VMware虚拟GPU做硬件的OpenGL实现。 还有几种基于软件的渲染器:swrast(传统的Mesa光栅器),softpipe(镓参考驱动器)和llvmpipe(基于LLVM/JIT的高速光栅器)。
当使用梅萨你可以设置LIBGL_ALWAYS_SOFTWARE
环境变量,这将导致梅萨“始终使用软件呈现”。
OpenGL不是一个指令集,也不是一个库。它是一个用于与GPU接口的绘图API(是的,有基于软件的光栅化器,如Mesa softpipe)。现在你可以找到的大多数计算机都支持OpenGL。
当您使用OpenGL API时,您的OpenGL调用不会像您的OpenGL调用那样被转换为GPU的特殊指令集,而这些指令集则是您的程序的一部分。 OpenGL操作只会创建最终以设备驱动程序结束的调用,就像读取或写入文件一样。
这不是一个答案,这是一条评论。但是,谢谢你在SO上的许多有用的OpenGL答案,其中之一是我今天提出的。 –
@NickWiggill:对不起,但很难让你的问题摆在首位。你在问关于x86 OpenGL的实现。好的,有。每个针对x86架构的GPU驱动都是这样的实现。你在谈论调试,但是你根本没有告诉你想要调试什么。你也应该考虑OpenGL是一个黑盒子。假设您正在使用“Mesa softpipe”进行调试:您想了解使用该实现的*程序的什么? – datenwolf
“每个针对x86架构的GPU驱动程序都是这样的实现”。你说得很对。但它们不仅仅需要x86 CPU - 它们还需要一个能够与x86系统搭配使用的GPU。所以我可以看到混淆的地方。我基本上要求一个软件实现。重新调试,两个方面:GPU OpenGL可能会报告,但除非请求,否则不会吐出数据。 Mesa可以通过一个开关来完成。其次,我想更容易地洞察着色器产生的值。 TBF,我不确定Mesa是否可以提供这个服务。 –
[MESA](http://www.mesa3d.org/faq.html)?不过,它可能不支持你想要的所有功能。 – Michael
@迈克尔,很好!我听说过它,但不知道它是什么。但是......哦......只有OpenGL 3.1和我的目标是3.2核心配置文件。 :/仍然,也许有可能... –
@迈克尔,这是他们的网页上的错误。看[这里](http://cgit.freedesktop.org/mesa/mesa/tree/docs/GL3.txt),它支持高达3.3。如果您可以将此作为答案发布,我会接受。谢谢! –