编程语言/库如何与硬件通信
How do programming languages/libraries communicate with hardware?
所以我正在研究是否有任何方法可以绕过微软为Windows Phone 7设置的XNA/Silverlight锁定,因为也许我可以使用SFML(.net绑定)进行应用程序开发和其他我所知道的库。
我没有找到.....
现在我想知道的是为什么windows phone和其他类似的设备不允许使用某些语言和非托管库(如OpenGL),特别是因为我刚刚发现了平台调用/外部链接/其他双语技术。
为了理解这一点,我想我需要理解语言和机器硬件之间的关系:像OpenGL这样的c/c++库如何与屏幕/显卡通信?
附加问题: XNA不使用OpenGL/DirectX,所以它是一个完全独立的图形API吗?
操作系统用相同的API封装所有硬件。在操作系统内部,它使用硬件io地址来控制它。
OpenGL/DirectX/XNA封装了所有操作系统的系统API与一个简单,易于使用的接口,所有的程序在其上。
就像下面:
Hardware <- HAL <- DirectX / OpenGL <- XNA <- Your Program
希望这对你有帮助:)
杰森扩展的管道看起来像:
Hardware <- Vendor Drivers <- HAL (Operating System) <- OS Native Methods (DirectX/OpenGL) <- Managed Wrappers (XNA / .Net Frameworks / Java) <- Your Program
厂商锁定设备有几个不同的原因。
- 锁定的设备往往有较少的技术问题,Verizon等不想修复苹果/微软/谷歌/摩托罗拉/黑莓软件问题。
- 锁定的设备可以(并不总是)更安全,因为第三方编写不良驱动程序/软件的机会更少。
- OpenGL最初/当前的设计是/不打算在移动平台上运行。
- 锁定设备可以为操作系统制造商创造更多的收入,因为有些设备要求您购买开发软件和/或开发许可证来编写软件。
我对这些都不是特别感兴趣,但它们只是浮现在脑海中。
相关文章:
- VSOMEIP-2个设备之间的通信(TCP/UDP)不工作
- 如果编译的源代码是特定于它编译的硬件的,我们如何分发它
- 是否可以使用winusb同时与多个相同的usb设备进行通信
- 混淆了如何使用IDL与Ethovision进行通信
- C++ Boost::asio串行通信与Arduino无法写入
- 我是否需要包含隐式使用/与 WindowsAPI 通信"Windows.h"?
- 通过TCP的PvP通信问题
- C++一个线程如何正确通信其任务已完成?
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- 如何将 Firebase 与基于 Linux 的客户端应用配合使用,以便与服务器进行双向消息通信
- FFmpeg——使用硬件加速进行视频解码
- 有关图像处理应用程序的硬件和软件安全性的建议
- 删除功能不适用于串行通信后多个循环中的多个实例
- 如何使用Arduino开始与完成的硬件进行编程/通信
- 使用 QThreads 与多个硬件设备通信
- 语言如何与硬件通信
- 硬件通信的OO方法..可能是辛格尔顿
- 我可以使用c/c++与硬件设备通信吗?
- 编程语言/库如何与硬件通信
- C++应用程序和硬件通信