openGL
openGL
一、搭建环境
下载vs
下载glfw
https://www.glfw.org/download.html(下旧版本,新版本没有找到一些文件)
接入
二、创建项目
新建一个空的项目,选择添加空的项目
选择c++
然后再次右键属性,发现这里已经有c++了
属性选择【常规】-> 【所有配置】+【所有平台】
然后选择【附加包含目录】选进去这个include库
接着选链接器的附加包含目录
lib是编译的时候用到的,如果完成源代码的编译,只需要lib,如果要使得动态库的程序运行起来,只需要dll。
新增三个资料库
opengl32.lib
glfw3.lib
glew32s.lib
新建测试代码
#include<iostream>//使用print
#define GLEW_STATIC
#include <GL/glew.h>
#include<GLFW/glfw3.h>
int main() {
printf("hihihi");
while (true) {
//do nothing
}
}
三、helloworld window
#include<iostream>//使用print
#define GLEW_STATIC
#include <GL/glew.h>
#include<GLFW/glfw3.h>
int main() {
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 opengl window",NULL,NULL);
if (window == NULL)
{
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
//Init GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK) {//初始化不成功
printf("Init GLEW failed.");
glfwTerminate();
return -1;
}
//
glViewport(0, 0, 800, 600);
//Render Loop
while (!glfwWindowShouldClose(window)) {
glfwSwapBuffers(window);
glfwPollEvents();
}
//释放/删除之前的分配的所有资源
glfwTerminate();
return 0;
}
- glfwCreateWindow
-
GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);//开窗
空指针这里的两个参数要打NULL,大写!!!
-
glViewport(0, 0, 800, 600);
glViewport函数前两个参数控制窗口左下角的位置。第三个和第四个参数控制渲染窗口的宽度和高度(像素)。
-
while (!glfwWindowShouldClose(window)) { glfwSwapBuffers(window); glfwPollEvents(); }
- glfwWindowShouldClose函数在我们每次循环的开始前检查一次GLFW是否被要求退出,如果是的话该函数返回
true
然后渲染循环便结束了,之后为我们就可以关闭应用程序了。 - glfwPollEvents函数检查有没有触发什么事件(比如键盘输入、鼠标移动等)、更新窗口状态,并调用对应的回调函数(可以通过回调方法手动设置)。
- glfwSwapBuffers函数会交换颜色缓冲(它是一个储存着GLFW窗口每一个像素颜色值的大缓冲),它在这一迭代中被用来绘制,并且将会作为输出显示在屏幕上。
- glfwWindowShouldClose函数在我们每次循环的开始前检查一次GLFW是否被要求退出,如果是的话该函数返回
运行结果: