准备工作:
纹理图片,用画图软件建立32*32, 128*128与512*512的图片来作为外景的纹理。
用uv建模软件建立飞行器模型,建立坐标v,法向量vn,和纹理坐标vt,导出obj文件。
建立LoadOBJ的方法,因为obj文件的存储方式是罗列坐标和向量数据和他们的组合方式f,所以只要读懂obj文件的数据存储格式就不难把原模型恢复到版面中了。
库文件:
Glut:(英文全写:OpenGL Utility Toolkit)是一个处理OpenGL程式的工具库,负责处理和底层操作系统的呼叫以及I/O,就是那种建立窗口,调整窗口,双缓存那种基本的方法的库。
Glaux:主要是用于读取BMP图片和图片相关的一些方法,其中AUX_RGBImageRec结构体用于贴纹理(sizeX,sizeY,data)。
Glm.hpp:<glm::vec3>,<glm::vec2>二维三维的坐标使用起来很方便,glmUnitize方法把模型归一化到一个0.5边长的正方体里。glmScale把模型伸缩变换。等等
正文程序:
建立反射光,散射光和环境光的模拟光照系统,4个光照360度无死角照绕整个飞行器的。
写读取BMP和OBJ文件并且把数据存储起来的方法。
把BMP做成纹理,把绑定纹理和指定纹理。
变幻光照的强度来和颜色来造成白天黑夜的效果。
后表面完全填充模式,抗锯齿,双缓冲,雾气的一些技术。
特色:
飞机飞行的方法,最常见的两种是飞机飞行或者外景挪动。但是都不太适合这种小型模型制作,首先飞机和视觉的坐标会挪动,虽然可以push和pop但是处理起来不方便,而且外景的铺垫会浪费空间和时间(有点强迫症)。于是我想了一个办法,贴纹理的过程是先把纹理存储到模板里面,然后再拿出来渲染,我把渲染的版面分割成45份(足够小就行)然后每块分别往后挪动就能造成移动的视觉了,这样就可以最大程度节省空间和时间了。