V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
skywind3000
V2EX  ›  C++

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

  •  2
     
  •   skywind3000 ·
    skywind3000 · Aug 17, 2020 · 3823 views
    This topic created in 2080 days ago, the information mentioned may be changed or developed.

    效果:

    特性:

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

    链接:

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

    6 replies    2020-08-18 15:06:18 +08:00
    across
        1
    across  
       Aug 17, 2020
    en?
    我怎么记得这个渲染器前几年你有发过,就是在知乎看的。 但是日志写的 8 月····
    across
        2
    across  
       Aug 17, 2020
    @across 哦,现在这个是基于 dx 的····
    GM
        3
    GM  
       Aug 17, 2020
    这个做入门文章太棒了,赞一个👍👍👍
    skywind3000
        4
    skywind3000  
    OP
       Aug 17, 2020
    @across 不是基于 dx 的,只是提供和 dx 类似的接口而已,整个图片是从画点开始画出来的。很多年前我发过的是另外一个传统实现,适合 CPU 实时渲染的,叫做 mini3d,和这个是两种思路,这个更多是模仿 GPU 。
    jones2000
        5
    jones2000  
       Aug 18, 2020
    和 OpenGL 比,用哪个好?
    skywind3000
        6
    skywind3000  
    OP
       Aug 18, 2020
    @jones2000 这个是教学用的,性能当然比不上 opengl/dx,只是让你通过这个程序知道 opengl/dx 的原理。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4975 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 09:50 · PVG 17:50 · LAX 02:50 · JFK 05:50
    ♥ Do have faith in what you're doing.