openGL学习笔记1——你好,窗口,在windows10+vs2017上的实现

6 篇文章 0 订阅

1.输入头文件

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

#include<iostream>

2.初始化GLFW,告诉GLFW我们使用的主版本号和次版本号都是3,也就是告诉GLFW我们使用的OpenGL版本是3.3.告诉GLFW我们使用的模式是核心模式。

int main()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR,3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR,3);
    glfwWindowHint(GLFW_OPENGL_PROFILE,GLFW_OPENGL_CORE_PROFILE);
    return 0;
}

3.创建GLFW窗口对象,窗口的长为800,宽为600,窗口标题为LearnOpenGL,存放所有和窗口相关的数据,将来会被GLFW的其他函数频繁引用。判断窗口是否创建,构建万一出错的输出。

GLFWwindow* window = glfwCreateWindow(800,600,"LearnOpenGL",NULL,NULL);
if(window == NULL)
{
    std::cout << "failed to create GLFW window" << std::endl;
    glfwTerminate();
    return -1;
}

4.通知GLFW我们窗口的上下文设置为当前线程的主上下文.

glfwMakeContextCurrent(window);

5.初始化glad,用来管理OpenGL的指针。

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

6.告诉OpenGL渲染窗口的左下角位置坐标(-1到1之间),宽度和高度。

glViewport(0,0,800,600);

7.对窗口创建回调函数,使得窗口大小改变时视口随之调整。

void framebuffer_size_callback(GLFWwindow* window,int width,int height){
    glViewport(0,0,width,height);
}

glfwSetFramebufferSizeCallback(window,framebuffer_size_callback);

8.构建渲染循环(Render Loop)。

while(!glfwWindowShouldClose(window))
{
    glfwPollEvents();//检查触发事件、更新窗口状态、调用回调函数
    glfwSwapBuffers(window);//交换颜色缓冲
    
}

9.释放资源

glfwTerminate();
return 0;

10.加入输入控制。构建函数processInput如果按下escape键,结束循环。

void processInput(GLFWwindow *window)
{
    if(glfwGetKey(window,GLFW_KEY_ESCAPE)== GLFW_PRESS)
    glfwSetWindowShouldClose(window,true);
}

11.在构建的循环渲染中调用processInput函数

while(!glfwWindowShouldClose(window))
{
    processInput(window);//输入

//渲染指令


    glfwPollEvents();//检查调用事件
    glfwSwapBuffers(window);//交换缓冲区
}

12.自定义颜色清空屏幕。调用glClear 函数清空屏幕颜色缓冲。glClear函数可以采用的缓冲位包含:

GL_COLOR_BUFFER_BIT:颜色缓冲

GL_DEPTH_BUFFER_BIT:深度缓冲

GL_STENCIL_BUFFER_BIT:模板缓冲

glClearColor(0.2f,0.3f,0.3f,1.0f);
glClear(GL_COLOR_BUFFER_BIT);

学习资料来自于:https://learnopengl-cn.github.io/01%20Getting%20started/03%20Hello%20Window/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

豆子加油

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

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

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

打赏作者

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

抵扣说明:

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

余额充值