openGL实战1-hello world

上篇文章主要记录了如何在Macbook M系列上进行openGL开发的环境搭建。本篇内容呢,则是关于openGL的第一个项目,hello world的实战。

引入头文件

开始的第一步,需要include必要的头文件,这里主要用到的是glew以及glfw3,还有一个就是关于输入输出的库iostream

#include <glew.h>     // 用 GLEW 替代 glad
#include <glfw3.h>
#include <iostream>

设置版本信息

由于笔者使用的的openGL的版本是3.3的,所以我需要对版本信息进行初始化
初试化了major、minor等版本

    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    // if is macOS
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

此外由于咱们用的是macOS系统,所以还需要加上 glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
这一句

创建窗口以及上下文

    // create windows
    GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);
    if (window == nullptr) {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    // 设置上下文
    glfwMakeContextCurrent(window);

渲染循环

    // 渲染循环
    while (!glfwWindowShouldClose(window)) {
        // 输入处理
        glfwPollEvents();

        // 渲染:清除颜色缓冲区并设置颜色
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // 交换缓冲区,将窗口显示到窗口
        glfwSwapBuffers(window);
    }   // while

这里需要使用glClearColor对窗口颜色进行设置
glClearColor的入参情况如下:
glClearColor (GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);

使用 glClear(GL_COLOR_BUFFER_BIT);对图像进行清理

    glfwSwapBuffers(window);将渲染展示出来

完整代码

//
// Created by zixhu on 2025/1/16.
//

#ifndef OPENGL_STUDY01_H
#define OPENGL_STUDY01_H

#include <glew.h>     // 用 GLEW 替代 glad
#include <glfw3.h>
#include <iostream>


int study01() {

    // init info glfw version
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

    // if is macOS
    glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    // create windows
    GLFWwindow *window = glfwCreateWindow(800, 600, "LearnOpenGL", nullptr, nullptr);
    if (window == nullptr) {
        std::cout << "Failed to create GLFW window" << std::endl;
        glfwTerminate();
        return -1;
    }
    // 设置上下文
    glfwMakeContextCurrent(window);

    // 渲染循环
    while (!glfwWindowShouldClose(window)) {
        // 输入处理
        glfwPollEvents();

        // 渲染:清除颜色缓冲区并设置颜色
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);

        // 交换缓冲区,将窗口显示到窗口
        glfwSwapBuffers(window);
    }   // while

    return 0;
}

#endif //OPENGL_STUDY01_H

最终的效果如下所示:
在这里插入图片描述
由于笔者也是openGL的初学者,所以在一些问题的描述上难免有些不准确的点,还希望多多包涵!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陶陶name

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值