【问题标题】:How do you render a game without using DirectX or OpenGL?如何在不使用 DirectX 或 OpenGL 的情况下渲染游戏?
【发布时间】:2011-08-12 18:58:44
【问题描述】:

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

  1. OpenGL
  2. DirectX
  3. 软件

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

【问题讨论】:

  • 这只是意味着它使用CPU而不是GPU来执行顶点/光照计算。
  • 这可能更适合game development site
  • 它就像使用 GDI,它只是显示像素的原始库。查看 Processing,您可以从这些示例中学到很多东西。 processing.org

标签: c++ opengl directx direct3d


【解决方案1】:

软件的确切含义是:软件。

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

【讨论】:

    【解决方案2】:

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

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

    2. 全部手动完成。本质上,硬件加速的 GFX 卡大多只绘制三角形。您可以编写一个函数,将纹理三角形的像素直接绘制到显卡的屏幕内存中。现在速度不是很快(这就是存在硬件加速 gfx 卡的原因),但在 80 年代和 90 年代还没有这样的卡时,它就是这样做的。

    要大致了解纹理映射器的工作原理,请查看维基百科文章:https://en.wikipedia.org/wiki/Texture_mapping

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

    【讨论】:

      【解决方案3】:

      例如,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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多