V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
skywind3000
V2EX  ›  C++

如何用 C++ 写一个软件渲染器?

  •  2
     
  •   skywind3000 ·
    skywind3000 · 2020-08-17 15:35:10 +08:00 · 2979 次点击
    这是一个创建于 1566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    效果:

    特性:

    • 单个文件,从画点开始实现可编程渲染管线,无外部依赖。
    • 模型标准,计算精确,使用类 Direct3D 接口。
    • 使用 C++ 编写顶点着色器和像素着色器,方便断点和调试。
    • 使用 Edge Equation 精确计算三角形覆盖范围,处理好邻接三角形的边界。
    • 全中文注释,每一处计算都有解释,核心代码 200 行,突出易读性。
    • 多个教程例子,从如何画三角形到模型以及光照。

    链接:

    https://zhuanlan.zhihu.com/p/182872172

    6 条回复    2020-08-18 15:06:18 +08:00
    across
        1
    across  
       2020-08-17 15:46:56 +08:00
    en?
    我怎么记得这个渲染器前几年你有发过,就是在知乎看的。 但是日志写的 8 月····
    across
        2
    across  
       2020-08-17 15:47:58 +08:00
    @across 哦,现在这个是基于 dx 的····
    GM
        3
    GM  
       2020-08-17 15:55:18 +08:00
    这个做入门文章太棒了,赞一个👍👍👍
    skywind3000
        4
    skywind3000  
    OP
       2020-08-17 23:45:44 +08:00
    @across 不是基于 dx 的,只是提供和 dx 类似的接口而已,整个图片是从画点开始画出来的。很多年前我发过的是另外一个传统实现,适合 CPU 实时渲染的,叫做 mini3d,和这个是两种思路,这个更多是模仿 GPU 。
    jones2000
        5
    jones2000  
       2020-08-18 00:18:39 +08:00
    和 OpenGL 比,用哪个好?
    skywind3000
        6
    skywind3000  
    OP
       2020-08-18 15:06:18 +08:00
    @jones2000 这个是教学用的,性能当然比不上 opengl/dx,只是让你通过这个程序知道 opengl/dx 的原理。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1080 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.