前言
OpenGL是著名(大概?)的图形处理工具,准确来说是图形库规范的一种。这部分( 关于OpenGL的内容 )大都是我上《移动图形概论》的一些总结,可能会有些零碎…不过还是能看。
OpenGL本身存在已经有一些年头了,作为偏底层的语言,其实以后也可能用不上它。但是它所代表的图形渲染思路却是共通的,因此学习OpenGL仍算是必要的。
需要说明的是,由于OpenGl只是一种图形库规范,统一了函数接口,具体代码的实现会随着显卡厂家和库编写者的不同而发生变化,我所使用的是学校要求的OpenGL+PVR,语言为C/C++,在Linux上调试和运行。
文件框架
文件分类
一个OpenGL可运行的夹下的文件被分为几类文件:Makefile,.cpp,.h ,.fsh和.vsh。在编译(make)后会多出.o和log.txt文件,很明显.o文件是编译后的文件,log.txt是运行日志,都不用管他们。
.h顾名思义是.cpp的头文件,Makefile用于cmake编译最后的文件,.fsh和.vsh为图形渲染文件。
文件内容
Makefile
只需要关注其中关于PVR库的路径是否正确即可,不正确的库路径将无法被编译。
.cpp
.cpp是C/C++文件格式,一般包括了主文件和附加文件。
主文件内一般分为三块,自定义类对PVR库的继承,文件的初始化(一般以init标注)和主函数(renderFrame)。
对库的继承会得到PVR相关的函数库,文件初始化一般包括图形渲染文件的合并,对渲染变量地址的提取等,主函数则会调用附加.cpp文件的render模块,实现循环。
附加文件实现具体某物件的渲染,包括几何图形顶点的确定,连线方式等。
.h
.h是.cpp附加文件的头文件,一般用于初始化自定义的类等,使代码简洁。
.fsh和.vsh
.fsh和.vsh是图形渲染文件,一般被命名为VerShader.vsh和FragShader.fsh,即顶点着色器和片段着色器。通过更改其中代码可以改变着色方式以及渲染效果,但新添加的变量也同样需要到外部主文件和附加文件处提取。
驱动方式
首先利用cd命令将命令行转至当前文件夹下,再利用make创建可执行文件。
最后执行该文件即可。
在
make其他电脑编写的源代码时,检查Makefile文件中PVR库的地址是否匹配是个不错的习惯。
结语
摸索OpenGL代码,猜测它们的含义是很辛苦的…所以我打算把它们记录下来,以后再遇到类似的情况,至少知道如何处理。
使用VScode,然后
control+F是个不错的主意,它可以快速帮你理清各文件之间参数和函数的关系。