OpenGL(C++3D库)教程 1 配置与调试
备注
- 这里使用的编辑器是Dev-C++。
- OpenGL是Windows自带的,不用额外安装。
- 下载我分享的文件时点右上角的【云+箭头】按钮打包下载,默认文件名为
archive.zip
。
- OpenGL是Windows自带的,不用额外安装。
配置GLFW
GLFW(点击下载)是OpenGL的窗口管理扩展库,下载好会有一个压缩包。解压后有2
个文件夹5
个文件:
首先,把lib\glfw3.dll
复制到C:\Windows\System32
和C:\Windows\SysWOW64
中。
然后把两个lib\libglfw3.a
和lib\libglfw3dll.a
文件复制到C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\lib
和C:\Program Files (x86)\Dev-Cpp\MinGW64\lib\gcc\x86_64-w64-mingw32\lib32
中。
最后,把文件夹GLFW
放在C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include
中(如果那里没有GL
文件夹,直接下载我的GL
复制进那里)。
配置GLAD
GLAD(点击下载,和上面一样)是OpenGL的函数加载扩展库。这次配置比上面简单。下载好后解压,把include\glad
和include\KHR
直接复制到C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\include
中就可以了。
注意:scr
一定要留!!!每次编写OpenGL项目时一定要放到与源代码同一目录下!!!
最后的配置
打开Dev-C++,文件->新建->项目->Multimedia->OpenGL,创建一个新项目。注意,请给项目新建一个文件夹,因为Dev-C++是不会自动给项目添加文件夹的。
然后看到左边的项目管理,右键点击属性,在参数->链接中添加以下参数:
-lopengl32
-lglfw3
-lglu32
-lgdi32
-lwinmm
点击确定,配置结束。
调试
Dev-C++会自动生成一个main.cpp
,运行后会出现一个彩色三角形,但是我们先不用管,新建一个文件(项目中添加新单元选是),输入如下代码:
#include <iostream>
#include <glad/glad.h>
#include <glfw/glfw3.h>
using namespace std;
void error_callback(int error, const char* description) {
cout << "Error:" << error + description << endl;
}
//处理用户输入
void process_input(GLFWwindow* window) {
if (glfwGetKey(window, GLFW_KEY_ESCAPE)==GLFW_PRESS) {
glfwSetWindowShouldClose(window,GLFW_TRUE);
}
}
int main() {
glfwSetErrorCallback(error_callback);
if (glfwInit()) {
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow(800,600,"My First GL Program",NULL,NULL);
if (!window) {
cout << "Failed to create window!!!" << endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
while (!glfwWindowShouldClose(window))
{
process_input(window);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
return -1;
}
运行成功,如下:
可以发现,没有光标闪动,说明这不是控制台,是真真正正的图形3D界面!
至此,调试与配置成功!~~这可花了我一个月的学习研究啊!~~撒花!