上一篇文章中,我们为游戏搭建了基本框架,创建了几个必要类,但是也仅仅是创建了他们而没有实现。现在我们将开始为他们编码,实现其内容。这将是出现大量代码的一篇文章。
首先是 Shader 类,我们之前的代码中也用到了 Shader 类,但是那个类封装的较为粗糙。甚至于将文件读取也封装到了里边,而现在我们对其稍微更改:
1 | class Shader |
我们为其封装了 id 属性,Compiler 方法以及 Use 方法和为着色器传输数据的 Set 系列方法。具体方法的实现看这里:Shader.cpp 。
除了 Shader 之外,另一个资源类则是 Texture 类,这是我们的 Texture2D 类声明:
1 |
|
如 Shader 类一样,我们在类中封装了大量的属性和方法,具体实现也可以直接看源代码 Texture2D.cpp,毕竟这不是我们这次游戏练习的主要内容。
游戏类的封装我们在上一篇文章中介绍了,资源管理器类其实也就是我们上一篇文章中写的那几个,毕竟现在只是大概一个框架,没有多少详尽的内容。
这是 ResourceManager 类的声明:
1 | class ResourceManager |
具体实现也直接看源文件吧:ResourceManager.cpp
在接下来的学习中,我们将着重于介绍围绕游戏逻辑以及游戏开发技术的方面,基础的 OpenGL 知识将一笔带过。