4

当我使用显卡在屏幕上渲染东西时,如果我理解正确的话,只有三个选项可用。这些是

  1. DirectX(或 XNA)
  2. OpenGL
  3. Windows Driver Kit 和创建图形驱动程序的最小实现

我对 DirectX 或 OpenGL 的经验很少,但据我所知,您必须编写一个像素着色器程序来告诉渲染管道如何处理每个像素。这些着色器在 HLSL 中编程。但据我所知,DirectX 和 OpenGL 都无法返回一个指向内存的指针,我可以byte[]从我的 C# 程序中写入一些缓冲区并对其进行渲染。还是我在这里弄错了?

WDK 可能是一个更好的选择,因为它可以实现绝对最小的图形驱动程序实现,它只返回指向我可以写入 RGB 数据的内存的指针。因此,一方面我可以摆脱 DirectX 或 OpenGL 提供的所有抽象(我不需要),但另一方面,驱动程序开发的复杂性并不能完全节省时间。

此外,根据我在搜索更多信息时发现的信息,在过去的 DOS 中有一个地址 0B00 或类似的地址,允许开发人员直接在屏幕缓冲区上绘图。它当然已经消失了,我猜它不再可用,但出于兼容性原因,我已经阅读了这些内存空间仍然保留。有可能以某种方式利用它吗?

从 C# 访问视频内存以便我可以直接在屏幕上写入的最简单方法是什么?DirectX 或 OpenGL 是否提供这样的功能,使我能够直接在某处复制字节数组并对其进行渲染?

4

1 回答 1

0

通过使用 OpenGL 或 Direct3D 的内置纹理渲染功能,您可以将像素数据从客户端内存复制到服务器端内存,然后让它在屏幕上渲染纹理。

注意:客户端内存是指程序可访问的内存(在 CPU 和 RAM 中),服务器内存是指显卡上的内存。这与网络无关

于 2012-08-06T12:35:22.010 回答