LearnOpenGL网站打砖块小游戏项目复现心得
LearnOpenGL网站打砖块小游戏项目复现心得。
在https://learnopengl.com/以及作者在GitHub上传的资料中我们可以获取该项目的全套的代码和资源素材,这里将不再补充。
在整个项目复现过程中,主要问题基本集中在环境配置上,分享一下我在项目中遇到的三个问题及其解决办法。
一、莫名其妙的问题
在项目中会出现一些莫名其妙的问题,例如会出现找不到main函数或找不到opengl32.lib等错误。
解决办法:在创建空项目之后,在配置环境之前,首先创立一个.cpp文件,在文件中输入如下代码
int main() { return 0 ; }将这个项目运行一次后再配置环境,可以解决如上问题。
二、配置环境
头文件和dll文件在这个项目中,除了作者在项目中打包好的,还有窗口接口文件glad,glfw,矩阵运算文件glm,后面音乐文件irrKlang,在作者的LearnOpenGL-master\includes下可以找到
而文本文件freetype,则需要在https://freetype.org/中下载,在解压文件中freetype-2.10.0\builds\windows\vc2010,点击freetype.sln,
生成后可在,freetype-2.10.0\objs\Win32\Debug中找到生成的freetype.dll。
将freetype.dll、irrKlang.dll、ikpMP3.dll都放到game_breakout\x64\Debug目录下,与game_breakout.exe同一目录即可。
三、代码问题
在作者源代码game.cpp中
void Game::Init()函数下
Renderer = new SpriteRenderer(ResourceManager::GetShader("sprite"));会出现如下报错
所以替换为
Shader shader_temp = ResourceManager::GetShader("sprite"); Renderer = new SpriteRenderer(shader_temp);
同理在
void Game::Render()函数下
Renderer->DrawSprite(ResourceManager::GetTexture("background"), glm::vec2(0.0f, 0.0f), glm::vec2(this->Width, this->Height), 0.0f);会出现如下报错
如法炮制替换为
Texture2D texture_temp = ResourceManager::GetTexture("background"); Renderer->DrawSprite(texture_temp, glm::vec2(0.0f, 0.0f), glm::vec2(this->Width, this->Height), 0.0f);