Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.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
C# 编程语言/库如何与硬件通信?_C#_C++_Api_Windows Phone 7_Programming Languages - Fatal编程技术网

C# 编程语言/库如何与硬件通信?

C# 编程语言/库如何与硬件通信?,c#,c++,api,windows-phone-7,programming-languages,C#,C++,Api,Windows Phone 7,Programming Languages,因此,我正在研究是否有任何方法可以绕过微软为Windows Phone 7设置的XNA/Silverlight锁定,以便我可以使用SFML(.net binding)进行应用程序开发和其他我熟悉的库。 我没有发现 现在我想知道的是,为什么windows phone和其他类似设备不允许使用某些语言和非托管库(如OpenGL),特别是因为我刚刚了解了平台调用/外部链接/其他双语技术 要理解这一点,我想我需要理解语言和机器硬件之间的关系:像OpenGL这样的c/c++库如何与屏幕/图形卡通信? 附加问

因此,我正在研究是否有任何方法可以绕过微软为Windows Phone 7设置的XNA/Silverlight锁定,以便我可以使用SFML(.net binding)进行应用程序开发和其他我熟悉的库。
我没有发现

现在我想知道的是,为什么windows phone和其他类似设备不允许使用某些语言和非托管库(如OpenGL),特别是因为我刚刚了解了平台调用/外部链接/其他双语技术

要理解这一点,我想我需要理解语言和机器硬件之间的关系:像OpenGL这样的c/c++库如何与屏幕/图形卡通信?


附加问题:XNA不使用OpenGL/DirectX,所以它是一个完全独立的图形API吗?

操作系统使用相同的API封装所有硬件。在操作系统内部,它使用硬件io地址来控制它

OpenGL/DirectX/XNA用一个简单易用的接口封装了所有操作系统的系统API,并将其上的所有程序连接起来

如下图所示:

Hardware <- HAL <- DirectX / OpenGL <- XNA <- Your Program

Hardware扩展管道看起来像:

Hardware <- Vendor Drivers <- HAL (Operating System) <- OS Native Methods (DirectX/OpenGL) <- Managed Wrappers (XNA / .Net Frameworks / Java) <- Your Program

硬件XNA是DirectX的托管包装器!每个视频制造商(AMD/NVidia/Intel)都提供自己的OpenGL驱动程序,并对其进行编码,以便为其硬件执行适当的低级位旋转(这就是[大多数]驱动程序作为内核的一部分运行的原因)。这一层可以用多种方式包装——但这是它工作原理的“核心”。@pst:那么windows Phone就没有支持OpenGL的驱动程序了?内核是什么?@Griffin某处有人为硬件编写了适当的低级驱动程序,不管硬件是什么。通常可以认为操作系统的一部分与桥接硬件访问有关(例如,“驱动程序所在的位置”)@pst:你的意思是每一个新的硬件都需要有一个OpenGL驱动程序吗?为什么WP7不能使用OpenGL呢?谢谢Jason,但是什么是HAL?这是否意味着像Windows这样的操作系统使用其他厂商的硬件及其API来通信/控制硬件,而只是简单地以整洁/易于使用的方式将所有命令组织在一起?HAL是硬件抽象层(wikipedia…)操作系统厂商创建每个厂商需要创建的特定方法。当操作系统调用该方法时,供应商会让硬件执行该方法的任何操作。“HAL是硬件抽象层”对:)