图形学的作业的一个简单的实现。完成于3月31日,原谅我最后一天才提交:)。
VS 2010 + OpenGL, 涉及到OpenGL的一些库。
面片由三角面片组成,绘制时没有使用纹理,每个面片的颜色是随机生成的,obj文件的三角面片格式需要是 "f x y z"的形式,即没有法线和纹理坐标,可支持大量面片(文件夹下的obj_teapot_sample.obj和obj_camper_sample.obj等都可以执行),。 文件存储在源代码文件夹下,直接输入文件名,或者为默认文件名。为了显示完全,这里需要提供一个xmax与ymax的最大比,但这个值设置不好还是会显示不出来。由于取了整,坐标范围都在(0,1)之间的这种显示不出,尽量放大倍数。
- Faces3ui:存储对应点的序号
- Triangle3vec:存储三角形的三个点
- DepthColor: 存储一个点的最大深度和对应颜色
- ClassifiedTriangles:分类多边形表
- ClassifiedLines:分类边表
- ActivatedTriangles:活化多边形表
- ActivatedLines:活化边表
为了调整图像被看见,可能每根扫描线之间有间隙,没有进行处理,面片坐标数值较大时间隙不明显。 默认的背景颜色通过OpenGL绘制,因而只选择绘制有图案的部分。
拖了很久没写的作业,又一次任性么,可是红皮书好厚。。。最后还是没看。。。=。= 编程有些不好的习惯,一些像float最小值的宏定义也不熟悉,导致改了近一天的bug才满意了点。 还好一些实现出来效果还不错,譬如车和茶壶。