使用的库: freeglut,glew(OpenGL) stb_image(装载贴图) assimp(装载obj文件) 静态库在lib文件夹里,动态库在dll文件夹内 头文件在include里 如果你要把库加入自己的工程里: 记得在项目的属性-配置属性-调试-环境里加上dll文件 在配置属性-c/c++-常规-附加包含目录里加上include文件夹 在配置属性-链接器-附加库目录加上lib文件夹 在配置属性-链接器-输入-附加依赖项-加上几个lib文件 如果不确定具体怎么写,可以看看我是怎么写的 所有的库都集成在工程里了,应该打开就能直接运行 记得用 debug x86 来运行 如果需要在别的配置下运行(比如release x64),库文件可能要重新编译, 跟我说明你需要的库,我可以帮你编译 (下面的操作需要在着色器程序编译好之后进行) 里面核心的类就是modelLoader: new 的时候传入着色器的position、vexCoord和sampler三个uniform的location (position传递顶点位置,vexCoord传递贴图坐标,sampler选择显卡的采样器) load的时候传入需要载入的obj文件路径,然后在render函数里调用render就可以绘制了 需要注意,obj文件只支持每个面是三个顶点的格式,大部分的都是这种格式, 如果需要用到四边形绘制的文件,我再研究一下怎么加进去 还有就是所有贴图都必须保证存在,也就是你的mtl文件里面写有的贴图,都必须是找得到的 如果没有贴图,直接把mtl里面的map_kd还有map_ks删掉就行了 贴图你也可以通过改mtl文件来自己换,具体怎么弄,可以看之前助教发在群里的obj补充说明的文件 我还写了一下别的辅助类: camera:控制摄像机 worldTransform:控制物体移动、旋转、放大缩小 project:控制投影 具体怎么用,看程序里面的注释就行了 移动鼠标能移动摄像机的方向,把鼠标放在屏幕边缘不动,就能一直往那个方向转(比如想往左转,就把鼠标放在左边屏幕边缘) 上下能移动各90度,左右能环绕360度 按wasd能平行移动,方向键上下可以上下移动(这个移动有些问题,不过能用,如果有需要的话,我之后再修) --------------------------更新内容如下-------------------------------- obj现在支持读取漫反射相关的材质信息了。 我还写了一个简单的光照类,支持环境光和平行光。 我里面放有一个例子,光是从左边平行照过来,可以看看效果 shader相关的操作集成到了shader类里面,使用起来应该更容易了 ------------------------------------------------------------ 修复了材质没有贴图就无法显示的问题 ------------------------------------------------------------- 加了放大缩小的功能:按i可以“zoom in”,按o可以“zoom out” ------------------------------------------------------------ 改了modelloader类,使用比以前更简单了 添加了以下几个类: grid类:用于编辑模式下编辑流水线 assemblyLine类:用于显示流水线 product类:用于控制产品在流水线上的显示和移动 使用说明: 按e进入编辑模式,鼠标左键点击,点亮的地方就是流水线 再按e进入观察模式,可以看产品在流水线上的移动 ----------------------------------------------------------- 按m键可随时截图该屏幕