直接访问视频缓冲区
本文关键字:视频缓冲区 访问 | 更新日期: 2024-11-03 19:48:37
当我使用视频卡在屏幕上渲染内容时,如果我理解正确的话,只有三个选项可用。这些是
- DirectX(或XNA)
- OpenGL
- Windows 驱动程序工具包和创建图形驱动程序的最小实现
我对 DirectX 或 OpenGL 的经验很少,但据我所知,你必须编写一个像素着色器程序,告诉渲染管道如何处理每个像素。这些着色器在 HLSL 中编程。但据我所知,DirectX 和 OpenGL 都无法返回指向内存的指针,我可以从 C# 程序中写入一些byte[]
缓冲区并使其呈现。还是我在这里弄错了?
WDK 可能是更好的选择,因为它可以实现图形驱动程序的绝对最小实现,该实现除了返回指向我可以写入 RGB 数据的内存的指针外什么都不做。因此,一方面我可以摆脱DirectX或OpenGL提供的所有抽象(我不需要),但另一方面,驱动程序开发的复杂性并不能节省时间。
此外,根据我在搜索更多信息时发现的内容,在DOS的旧时代,有一个地址0B00或类似地址,允许开发人员直接绘制到屏幕缓冲区上。我猜它当然已经消失了,不再可用,但出于兼容性原因,我已经阅读了这个内存空间仍然被保留。是否有可能以某种方式利用它?
从 C# 访问视频内存以便直接写入屏幕的最简单方法是什么?DirectX 或 OpenGL 是否提供了这样的功能,使我能够直接在某处复制和数组字节并使其呈现?
通过使用 OpenGL 或 Direct3D 的内置纹理呈现功能,可以将像素数据从客户端内存复制到服务器端内存,然后让它在屏幕上呈现纹理。
注意:对于客户端内存,我的意思是可从程序访问的内存(在CPU和RAM上),对于服务器端内存,我是指显卡上的内存。这与网络无关