OpenGL踩坑总结3----模型加载篇

1. assimp的dll丢失问题

  • 最粗暴的办法就是将dll拷贝到存放项目exe的文件夹中,但是每个工程都要这么做就有些麻烦,毕竟只是学习而不是实际开发。
  • 可以右键单击项目属性->配置属性->调试->环境中设置dll的路径,最好设置成相对路径,方便在另一台设备中运行代码。
  • 我的代码仓库中dll的相对目录为:
    • path = ..\..\OpenGLPackages\dlls\dlls_x64
    • path = ..\..\OpenGLPackages\dlls\dlls_x86
  • 由于这个仓库的项目都是debug开发模式,所以可以将这两个目录配置到系统的环境变量中,这样不用设置项目也能直接引用到dll

2. 教程代码的缺陷

  • 当导入没有mtl或者缺少贴图的obj模型,这个模型就是一团黑,所以需要修改教程的代码让它支持这种模型:
    • 在着色器代码中添加一个布尔变量,用来判断有没有贴图,没有mtl肯定就没有贴图,直接这么判断就好了
      图片说明
    • 在光照函数中判断是否有贴图,有就采样贴图,没有就设定一个默认的颜色。以平行光(DirectionLight)为例,代码如下:
      图片说明
    • Mesh类的Draw方法才是绘制模型的函数,需要设置着色器,所以在Draw方法中添加对是否有贴图的判断。不仅要设置has_texture,最好也设置下shininess,否则光照结果会出现异常。
      图片说明
    • 最后看下没有贴图的模型加载出来是什么效果,嗯,还不错!
      图片说明
全部评论

相关推荐

03-16 22:00
武汉大学 C++
幸福的小熊猫想要offer:我阿里投的 c++岗,面试官说自己是做 java 的,c++这辈子才有了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务