当我使用显卡在屏幕上渲染东西时,如果我理解正确的话,只有三个选项可用。这些是
- DirectX(或 XNA)
- OpenGL
- Windows Driver Kit 和创建图形驱动程序的最小实现
我对 DirectX 或 OpenGL 的经验很少,但据我所知,您必须编写一个像素着色器程序来告诉渲染管道如何处理每个像素。这些着色器在 HLSL 中编程。但据我所知,DirectX 和 OpenGL 都无法返回一个指向内存的指针,我可以byte[]
从我的 C# 程序中写入一些缓冲区并对其进行渲染。还是我在这里弄错了?
WDK 可能是一个更好的选择,因为它可以实现绝对最小的图形驱动程序实现,它只返回指向我可以写入 RGB 数据的内存的指针。因此,一方面我可以摆脱 DirectX 或 OpenGL 提供的所有抽象(我不需要),但另一方面,驱动程序开发的复杂性并不能完全节省时间。
此外,根据我在搜索更多信息时发现的信息,在过去的 DOS 中有一个地址 0B00 或类似的地址,允许开发人员直接在屏幕缓冲区上绘图。它当然已经消失了,我猜它不再可用,但出于兼容性原因,我已经阅读了这些内存空间仍然保留。有可能以某种方式利用它吗?
从 C# 访问视频内存以便我可以直接在屏幕上写入的最简单方法是什么?DirectX 或 OpenGL 是否提供这样的功能,使我能够直接在某处复制字节数组并对其进行渲染?