OpenGL实现绘制寝室小记

来源:互联网 发布:网络诈骗案案例 编辑:程序博客网 时间:2024/05/22 10:37

背景:

今年读研,不巧被调剂到了虚拟现实实验室。绝大部分是与计算机图形学相关的东西,然而本科并没有学过,于是导师布置了一个作业。
“小程啊,这几个月呢,你先不要浪费,试着用OpenGL模拟一个学校,哦不,学校呢可能太大了,那你就先模拟你们住的寝室,了解一下三维编程是怎么做的怎么实现的。”

于是在忙活完了与此毫不相关的毕业设计后,就着手准备画个寝室出来,买了《计算机图形学(第四版)》后,翻了几章发现里面的讲的东西太过基础、过时,最新的VAO, VBO 等等概念都没有讲。于是在网上搜了好多教程,其中learnOpenGL的教程做的非常棒,借用了很多现成的库,可以很快的画出东西,加快了学习开发效率(网址:https://learnopengl-cn.github.io/)

教程翻得差不多后,可以开始着手画寝室了。由于画的是静态的画面,因此用到的知识点不多:

  • 摄像机的实现
  • 绘制长方体
  • 加载纹理

搜了好久之后(网上绘制三维场景的例子真是太少了=。=。。),
绘制三维场景的方案有两种:

  1. 利用基本的图元,构建相应的模型,然后贴上相应的纹理。
  2. 利用现成的建模软件(如3ds等)先建好模型,如床,桌子等,然后载入到OpenGL的程序中

无论从显示效果、还是显示效率来看,第二种的方案要远优于第一种方案,然而毕竟程序员的生涯才刚刚开始,本科阶段欠的代码量是注定要还的。于是采用了第一种方案中最简单的方案,拿不同大小的长方体完成了整个寝室的绘制。

实现效果

效果1
这里写图片描述
这里写图片描述
这里写图片描述

结尾

最后在deadline前写成了这幅样子,不过有人说,deadline并不是要求你做的有多完美,它只是给你一个把写的这么烂的东西交上去的勇气。这句话我是很赞同的。接下来的计划就可以静下心来回头看《计算机图形学》这本书了,基础还是很重要的。

具体的代码实现放到了github上(落了四年的水平写的真是太烂了,不过知耻而后勇嘛~求板儿砖)
https://github.com/likewind1993/DormitoryWithOpenGL

参考到的资料

  • 研究生计算机图形学课程室内场景OpenGL–实验报告
  • OpenGL绘制虚拟教室
  • Opengl 导入3Dmax制作的.3ds模型 并显示出来
原创粉丝点击