前言
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
是个不错的主意,它可以快速帮你理清各文件之间参数和函数的关系。