程序的编程环境为VS2008或以上
程序导入的场景为OBJ文件,导入信息不包括纹理坐标
用户界面说明:
ctrl + x : 模型饶X轴旋转
ctrl + y : 模型饶Y轴旋转
ctrl + z : 模型饶Z轴旋转
“+”:模型放大
“-”: 模型缩小
"Esc" 退出
算法思想主要来自于老师上课的PPT,为了适应编程时间需要,对相应数据结构做了修改。
导入的模型信息存储在t3DModel结构体中,主要包括:
模型顶点数,法线数,面片数,及纹理ID,及顶点,法线,面片的链表指针。
分类多边形表和活化多边形表采用同样数据结构
结构体成员包括:
1)面片法向(a,b,c),通过顶点坐标计算得出,开始想试图使用模型中导入的法向信息,发型由于精度问题,误差太大。
2)多边形跨越的扫描线数目dy
3)多边形标号id
4)y坐标最大的顶点处所对应的深度信息z
分类边表:dx,dy,id,x
活化边表:(不变)
xl,dxl,dyl,xr,dxr,dyr
zl,dzx,dzy,id
代码借用了OpenGL中glDrawPixels()来绘制每行像素。
- 1
- 2
前往页