opengl的大致流程

创建窗口

需要头文件 glfw3.h

1
#include <GLFW/glfw3.h>
  1. 初始化 glfw

    glfwInit():初始化,返回0表示正常

  2. 创建窗口

    glfwCreateWindow():创建窗口,接收窗口的长和宽,返回指向窗口对象的 指针

    1
    
    GLFWwindow *window = glfwCreateWindow(1280, 720, "GED", nullptr, nullptr);
    
  3. 设置窗口位置

    glfwSetWindowPos():设置窗口出现在电脑屏幕的何处,视具体电脑而异。

    1
    
    glfwSetWindowPos(window, 1000, 150)
    

这一步最重要的是获得窗口对象的指针。之后要设置和操作这个窗口,就要传入指针。

初始化OPENGL

OPENGL的驱动一般包含在各个显卡的驱动中,不用额外下载。除非你电脑刚买或者完全不联网不玩游戏

需要一个库来获得OPENGL的函数指针,常用glad。

包含头文件 glad.h

1
#include <glad/glad.h>
  1. 确定opengl版本

    这一步是对整个glfw操作,所以要在初始化glfw之后,创建window之前。

    glfwWindowHint:多重载函数,接收不同的命令设置不同的参数。

    1
    2
    3
    
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);  // opengl大版本
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);  // opengl小版本
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    
  2. 与window关联

    glfwMakeContextCurrent:将设置的OPENGL信息与window关联。

    1
    
    glfwMakeContextCurrent(window);
    
  3. 使用glad加载函数指针

    gladLoadGLLoader():返回值应为0。

    1
    
    gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)
    

颜色

OPENGL有四个颜色通道:

  • Red:红
  • Green:绿
  • Blue:蓝
  • Alpha:透明度

传值可以用RGB,取值范围: $[0,255]$ ;也可以是将其归一化后的浮点数,取整范围 $[0.0,1.0]$

旧版本一些函数不支持整数类型,因此必须使用归一化后的浮点数。可自定义归一化函数,方便传入RGB常规色值。

  1. 设置window背景颜色

    glClearColor():接收red、green、blue、alpha四个值。

    1
    
    glClearColor(1.0f, 0.5f, 0.7f, 0.2f);
    
  2. 让设置生效

    glClear():从颜色缓存里加载。

    1
    
    glClear(GL_COLOR_BUFFER_BIT);
    

上面的设置背景实际上不会生效,因为opengl使用双缓冲方案。

交换双缓冲

opengl使用双缓冲方案,在每生成下一帧时实际操作的是后缓冲区,要把后缓冲区交换成当前缓冲区。

交换缓冲的函数:

1
glfwSwapBuffers(window);

顶点

Licensed under CC BY-NC-SA 4.0
最后更新于 2025年12月5日 13:05
使用 Hugo 构建
主题 StackJimmy 设计