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