Skip to content

Files

Latest commit

author
fangshufeng
May 23, 2019
31984bc · May 23, 2019

History

History
108 lines (66 loc) · 2.57 KB

01.HelloWorld.md

File metadata and controls

108 lines (66 loc) · 2.57 KB

LearnOpenGL-HelloWorld

阅读本文前请先阅读以下文章,一些基本的理论不在讲述。

  1. 你好,窗口

一、初始化窗口

创建窗口大致分为以下步骤:

  1. 初始化glfw
  2. 配置glfw
  3. 通过glfw创建窗口

由于我们是通过glfw来创建窗口的,当然要先初始化它;

初始化glfw

glfwInit();

配置glfw

告诉它我们即将使用OpenGL的那个版本,分为主版本GLFW_CONTEXT_VERSION_MAJOR和次版本号GLFW_CONTEXT_VERSION_MINOR,并且使用的是核心模式

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
    

注意点 如果是mac平台添加下面这行才生效

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

更多的设置看这

通过glfw创建窗口

glfw准备好就可以创建窗口了

auto mWindow = glfwCreateWindow(mWidth, mHeight, "OpenGL", nullptr, nullptr);

其他的一些设置

方法名称 备注
glViewport(0, 0, 800, 600) 绘制屏幕的大小
glfwSetFramebufferSizeCallback() 窗口调整大小的时候调用这个函数

二、函数准备

创建好窗口后,由于后面会用到OpenGL的函数,我们要在使用之前将函数地址绑定好,所以创建好窗口应该绑定地址

第一篇已经说到有2中方法,任选一个吧

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

三、轮询

要想你的程序一直运行,需要一个循环保证程序不死,类似ocrunloop

while(!glfwWindowShouldClose(window))
{
    glfwSwapBuffers(window);
    glfwPollEvents();    
}

四、渲染

接下来我们只要在循环中渲染即可,而我们的整个学习阶段都在这个渲染阶段了