OpengGL教程(一)、渲染一个简单的窗体

本教程参考《计算机图形学编程》
仅作个人学习记录

前提

此教程使用如下环境:
GLFW、GLEW

渲染一个简单的窗体代码如下

#include <iostream>
#include <string>
#include <vector>

#include "glew.h"
#include "glfw3.h"


void init(GLFWwindow* window)
{

}

void display(GLFWwindow* window,double deltaTime)
{
    glClearColor(0.5f,0.5f,0.0f,0.5f);
    glClear(GL_COLOR_BUFFER_BIT);
}

int main()
{
    int major=0, minor=0,rev = 0;
    //获取GLFW使用的版本号
    glfwGetVersion(&major, &minor, &rev);
    std::cout << "GLFW Version: " << major << "." << minor << "." << rev << std::endl;

    if(glfwInit() != GLFW_TRUE)
    {
        std::cout << "Failed to initialize GLFW" << std::endl;
        return -1;
    }
    //设置窗口属性
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, major);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minor);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    //创建窗口
    GLFWwindow* window = glfwCreateWindow(600, 600, "Hello", NULL, NULL);
    //使调用线程的指定窗口的上下文成为当前的
    glfwMakeContextCurrent(window);
    //初始化GLEW
    if(glewInit() != GLEW_OK)
    {
        std::cout << "Failed to initialize GLEW" << std::endl;
        return 0;
    }
    std::cout << "GLEW Version: " << glewGetString(GLEW_VERSION) << std::endl;

    //交换间隔表示交换缓冲区之前等待的帧数,通常称为vsync。
    //默认情况下,交换间隔为0,但因为屏幕每秒只更新60-75次,所以大部分的画面不会被显示。
    //而且,缓冲区有可能在屏幕更新的中间交换,出现屏幕撕裂的情况。
    //所以,可以将该间隔设为1,即每帧更新一次。它可以设置为更高的值,但这可能导致输入延迟。
    glfwSwapInterval(1);

    init(window);

    while(!glfwWindowShouldClose(window))
    {
        display(window,glfwGetTime());
        //交换缓冲区。GLFW在默认情况下使用两个缓冲区。每个窗口有两个渲染缓冲区——前缓冲区和后缓冲区。
        //前缓冲区是正在显示的缓冲区,后缓冲区是即将显示的缓冲区。
        glfwSwapBuffers(window);
        glfwPollEvents();
    }

    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

运行结果

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值