从头开始的3d图形

时间:2017-04-14 17:57:29

标签: graphics 3d sfml

从头开始构建3D图形所需的程序的最低配置是什么,例如我只有SFML用于处理2D图形,我需要实现可以移动&的相机对象在空格中旋转

从哪里开始以及如何实施 vector3d - > vector2d转换函数和其他必要的东西

我现在拥有的只是: 角度Phi,Xi,epsilon 1-3和我可以使用以下公式在屏幕上绘制的一些对象

x/y = center.x/y + scale.x/y * dot(point[i], epsilon1/epsilon2)

但这种方式我只是转换"world"轴,而不是对象点

1 个答案:

答案 0 :(得分:1)

首先,您需要实现变换矩阵和矢量数学:

其余的取决于你想要实现的渲染类型:

  1. 边界多边形网格渲染

    这种渲染是当今gfx卡的原生。您需要为:

    实现缓冲区
    • 深度(对于没有z排序的填充多边形)
    • 屏幕(避免闪烁,也可用作画布)
    • shadow,stencil,aux(用于高级渲染技术)

    它们通常具有与目标渲染区域相同的分辨率。除此之外,您还需要实现支持的基元,至少呈现点,线,三角形。见:

    除此之外,你还可以添加纹理,着色器和其他任何你想要的东西......

  2. (返回)光线追踪

    这种渲染是非常不同的,当前的gfx HW不是为它构建的。这涉及实现光线/基元交叉点计算,斯涅尔定律和网格的分析表示。这样您还可以进行多光谱渲染和更加物理上准确的效果/过程,请参阅:

    2D和3D光线跟踪器之间的区别几乎没有唯一区别在于如何计算垂直向量...

    还有不同的渲染方法,如体积渲染,混合方法和其他,但它们的实现通常是面向任务的,通用描述很可能只是误导......我的一些3D射线追踪器: