OpenGL实现绘制寝室小记
来源:互联网 发布:网络诈骗案案例 编辑:程序博客网 时间:2024/05/22 10:37
背景:
今年读研,不巧被调剂到了虚拟现实实验室。绝大部分是与计算机图形学相关的东西,然而本科并没有学过,于是导师布置了一个作业。
“小程啊,这几个月呢,你先不要浪费,试着用OpenGL模拟一个学校,哦不,学校呢可能太大了,那你就先模拟你们住的寝室,了解一下三维编程是怎么做的怎么实现的。”
于是在忙活完了与此毫不相关的毕业设计后,就着手准备画个寝室出来,买了《计算机图形学(第四版)》后,翻了几章发现里面的讲的东西太过基础、过时,最新的VAO, VBO 等等概念都没有讲。于是在网上搜了好多教程,其中learnOpenGL的教程做的非常棒,借用了很多现成的库,可以很快的画出东西,加快了学习开发效率(网址:https://learnopengl-cn.github.io/)
教程翻得差不多后,可以开始着手画寝室了。由于画的是静态的画面,因此用到的知识点不多:
- 摄像机的实现
- 绘制长方体
- 加载纹理
搜了好久之后(网上绘制三维场景的例子真是太少了=。=。。),
绘制三维场景的方案有两种:
- 利用基本的图元,构建相应的模型,然后贴上相应的纹理。
- 利用现成的建模软件(如3ds等)先建好模型,如床,桌子等,然后载入到OpenGL的程序中
无论从显示效果、还是显示效率来看,第二种的方案要远优于第一种方案,然而毕竟程序员的生涯才刚刚开始,本科阶段欠的代码量是注定要还的。于是采用了第一种方案中最简单的方案,拿不同大小的长方体完成了整个寝室的绘制。
实现效果
结尾
最后在deadline前写成了这幅样子,不过有人说,deadline并不是要求你做的有多完美,它只是给你一个把写的这么烂的东西交上去的勇气。这句话我是很赞同的。接下来的计划就可以静下心来回头看《计算机图形学》这本书了,基础还是很重要的。
具体的代码实现放到了github上(落了四年的水平写的真是太烂了,不过知耻而后勇嘛~求板儿砖)
https://github.com/likewind1993/DormitoryWithOpenGL
参考到的资料
- 研究生计算机图形学课程室内场景OpenGL–实验报告
- OpenGL绘制虚拟教室
- Opengl 导入3Dmax制作的.3ds模型 并显示出来
- OpenGL实现绘制寝室小记
- Opengl小记
- 小记-OpenGL
- cocos2dx吸蓝效果实现opengl绘制
- OpenGL实现多层绘制(Layered Rendering)
- Android OpenGL 纹理绘制图像---JAVA实现
- Android OpenGL 纹理绘制图像---Native实现
- OpenGL实现Hermite算法绘制三次曲线
- openGL绘制正方体分别实现简单颜色绘制、纹理绘制、光照绘制
- 用openGL ES绘制圆角矩形的实现
- 关于CCTexure2D使用opengl实现绘制的原理分析
- OpenGL 实现Bresenham法绘制圆图元…
- OpenGL+QT实现矢量和影像的叠加绘制
- OpenGL绘制简单场景,实现旋转缩放平移和灯光效果
- MFC中可以实现OpenGL跨进程绘制
- OpenGL 通过VBO实现顶点数组绘制顶点
- 计算机图形学02一一OpenGL 代码实现绘制一条线
- 面绘制经典算法:MarchingCube实现(C++ OpenGl代码篇)
- iOS 如何给FrameWork添加Image, Xib文件
- Jquery之JSON
- Struts2初学者---通配符的用法
- scala基础5⃣️样例类
- php mac报错 dyld: Library not loaded: /usr/local/opt/jpeg/lib/libjpeg.8.dylib的解决办法
- OpenGL实现绘制寝室小记
- RxSwift样例七 SearchWikipedia
- Fragment内放置WebView,监听返回键,并逐级返回之前打开的网页
- JAVA集合知识点汇总
- JAVA调用C or C++的两种方式
- (lintcode)第2题尾部的零
- 设计模式C++版:第十四式命令模式
- linux下ACL权限
- 3—YOLO:训练自己的数据