Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
除了DirectX/OpenGL之外,还有更低级别的API吗?_Api_Opengl_Directx - Fatal编程技术网

除了DirectX/OpenGL之外,还有更低级别的API吗?

除了DirectX/OpenGL之外,还有更低级别的API吗?,api,opengl,directx,Api,Opengl,Directx,我听说OpenGL和DirectX调用实际上由视频驱动程序转换为特定于卡的调用。我还知道,有时一个新的视频驱动程序可以在开发人员不做任何事情的情况下将视频游戏的性能提高50%。如果我想对视频卡进行细粒度控制,这是否可能在DX/OpenGL以下的级别上实现?Nvidia/AMD是否会发布特定于供应商的API?算了吧,你会花更多时间阅读某种SDK并支持所有可能的视频卡。让我给你一个建议:只要阅读一些文章,解释如何使D3D或OpenGL应用程序有效(缓存、上下文切换等)。NVidia对其GPU编程模型

我听说OpenGL和DirectX调用实际上由视频驱动程序转换为特定于卡的调用。我还知道,有时一个新的视频驱动程序可以在开发人员不做任何事情的情况下将视频游戏的性能提高50%。如果我想对视频卡进行细粒度控制,这是否可能在DX/OpenGL以下的级别上实现?Nvidia/AMD是否会发布特定于供应商的API?

算了吧,你会花更多时间阅读某种SDK并支持所有可能的视频卡。让我给你一个建议:只要阅读一些文章,解释如何使D3D或OpenGL应用程序有效(缓存、上下文切换等)。

NVidia对其GPU编程模型保密。不可能低于DirectX、OpenGL、CUDA或OpenCL

AMD/ATI公开了他们的文档,但对于日常工作的程序员来说,这可能太低了:

英特尔公开了他们的Linux驱动程序的源代码,并提供了一些文档


AMD和Intel的Linux开源驱动程序都通过一个名为DRI2/DRM的低级API;与KMS(也称为镓)结合使用。MesaGL位于DRI之上,因此在Linux中,图形卡的API级别实际上低于OpenGL。MesaGL是一个所谓的DRI状态跟踪器,据我所知,葡萄酒开发人员的Direct3D-10(和11?)状态跟踪器即将完成,因此在可预见的未来,葡萄酒将支持原生Direct3D。当然,它只能与DRI一起使用,因此不支持NVidia GPU。

我同意其他一些帖子。不过,我想补充一点,您可能也希望查看着色器。它们允许您在实现高性能的同时做一些非常棒的事情。

在AMD/ATI上:

OpenCL--编译到->IL--编译到->ISA--链接到->ELF可执行文件

关于NVIDIA:

OpenCL——编译到->PTX——编译到->ISA——链接到->某种可执行格式

对于AMD,过去有CAL,它提供比OpenGL/OpenCL更低的访问级别,但现在已经被弃用。不过,有一些提示表明,可以通过OpenCL访问IL和ISA。请参阅本论坛帖子:

此外,这是用于研究的。我只支持一个视频卡(我的),因为没有标准(目前…),这里的答案归结到驱动程序的开源程度:@armadia你可能不会从编写自己的驱动程序中获得任何好处。如果你只是想要高性能,只需配置你的应用程序。但是,如果你的目标是了解驱动程序如何在内部工作,那么,这是一个很棒的项目。你的AMD链接很棒。谢谢