OpenGL_002创建窗口

创建窗口:

工程配置:

    我是用的是VS2013,根据情况配置一个Win32空项目,并配置glad和glfw的库目录。创建main.cpp

#include <iostream>
#include "glad/glad.h"
#include "GLFW/glfw3.h"

#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glfw3.lib")

int main()
{
    glfwInit();// 初始化glfw
 	glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //配置glfw,第一个参数为配置项,第二个接收整形,为配置值 
 	glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // 上下两行配置opengl3.3版本
 	glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 告诉GLFW我们需要使用核心模式意味着我们只能使用OpenGL功能的一个子集

#ifdef __APPLE__ // 苹果系统
 	glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
#endif
    return 0;
}
    在main.cpp写上如上代码,看是能能够正常运行,include可根据自己的配置更改,如果不能正常运行,说明配置存在错误,

具体配置需要一定编程经验,如果不会,可在本文末下载以配制好的工程(VS2013),在配置opengl版本的时候,需确定你的系统支持。

创建窗口

    glfw使用glfwCreateWindow函数创建窗口,使用glfwTerminate销毁资源,实用glfwMakeContextCurrent将窗口上下文设置为当前线程的主上下文。参考如下:

GLFWwindow* window = glfwCreateWindow(800, 600, "LearnOpenGL", NULL, NULL);
// 宽度, 高度, 窗口标题,后两个参数暂时忽略
if (window == NULL)/
{
    std::cout << "Failed to create GLFW window" << std::endl;
    glfwTerminate();/ 销毁
    return -1;
}
glfwMakeContextCurrent(window);//通知GLFW将我们窗口的上下文设置为当前线程的主上下文

加载OpenGL函数:

    GLAD是用来管理OpenGL的函数指针的,在调用任何OpenGL函数之前,都需要初始化glad:

if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress))
{
    std::cout << "Failed to initialize GLAD" << std::endl;
    return -1;
}

视口:

    在OpenGL渲染之前,需要告诉OpenGL渲染窗口的尺寸大小。OpenGL将会把三维坐标-1到1之间的图形投射到这个视口的范围之内显示,我们可以调用glViewport(0,0,800,600)来设置窗口的维度。窗口大小改变时,都是需要调用这个函数的,因此,可以将它作为回调函数,放在回调函数里面。

渲染循环:

    最后,我们应该创建一个渲染循环,里面一方面处理用户输入,一方面处理图像渲染,代码如下:

while(!glfwWindowShouldClose(window))//会一直检查是否应该被销毁
{
    glfwSwapBuffers(window);//交换颜色缓冲,双缓冲。
    glfwPollEvents();   //检查是否有触发事件,
}
opengl基本工程下载: https://download.csdn.net/download/qq_31622605/10319618


猜你喜欢

转载自blog.csdn.net/qq_31622605/article/details/79768884