如何在不使用DirectX或OpenGL的情况下渲染游戏?

时间:2011-08-12 18:58:44

标签: c++ opengl directx direct3d

例如在某些游戏中有3种不同的显示模式

  1. 的OpenGL
  2. 的DirectX
  3. 软件
  4. 这是什么软件模式?比如,程序员如何制作不使用OpenGL或DirectX生成图像的游戏引擎C ++中是否有生成帧的类?

3 个答案:

答案 0 :(得分:8)

软件就是指:软件。

所有渲染都是通过某种算法着色像素。该算法可以通过专用硬件完成,但您可以在实际代码中自行实现这些功能。现在,这并不意味着它特别;实现具有良好速度的三角形光栅化器需要很多技巧。

答案 1 :(得分:1)

软件模式可能意味着两件事:

  1. 系统提供的仿真层。例如,DX11提供WARP设备,作为应用程序员,您只需指定“我想使用WARP”,其余部分由DirectX完成。仿真层基本上执行选项2:

  2. 手工完成。本质上,硬件加速的GFX卡主要只绘制三角形。您可以编写一个函数,将纹理三角形的像素直接绘制到图形卡的屏幕内存中。现在它不是很快(这就是为什么硬件加速的gfx卡存在的原因),但这就是80年代和90年代没有这样的卡存在的方式。

  3. 粗略地说明纹理贴图的工作原理只需查看wikpedia文章:https://en.wikipedia.org/wiki/Texture_mapping

    我不知道任何提供自己软件层的gfx-libs,但我确定它们存在于某个地方。

答案 2 :(得分:0)

作为一个例子,directx有一个分层设置,有代码接口,它与HAL或硬件抽象层交互。根据底层硬件的功能,HAL可能会在CPU上运行一些代码,因为驱动程序报告GPU不支持该功能。 (是的,我知道这是一个粗略的过度简化)

请参阅:http://msdn.microsoft.com/en-us/library/gg426101(v=vs.85).aspx

和:http://www.codeproject.com/KB/graphics/DirectX_Lessons_2_.aspx