OpenGL学习笔记:opengl简介与安装

LearnOpenGL学习笔记:了解、安装并配置OPENGL

OPENGL简介

OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范。OpenGL规范严格规定了每个函数该如何执行,以及它们的输出值。而内部具体每个函数是如何实现的,将由OpenGL库的开发者自行决定。实际的OpenGL库的开发者通常是显卡的生产商。所有版本的OpenGL规范文档都被公开的寄存在Khronons那里。

核心模式与立即渲染模式

模式版本特点
立即渲染模式3.2以前容易使用和理解,抽掉细节易学习,但效率低
核心模式3.2以后更高的灵活性和效率,需要深入理解图形编程

特性

  1. 对扩展支持:当一个新特性或者渲染上有的大优化,通常会以扩展的方式在驱动中实现。开发者不必等待一个新的OpenGL规范面世,只需要简单地检查一下显卡是否支持此扩展。

  2. 自身是一个巨大的状态机:OpenGL的状态通常被称为OpenGL上下文,有一些状态设置函数和状态使用函数。通常通过 设置选项,操作缓冲,使用当前OpenGL上下文渲染 去更改OpenGL状态。

  3. 在OpenGL中一个对象是指一些选项的集合,它代表OpenGL状态的一个子集。

// OpenGL的状态
struct OpenGL_Context {
    ...
    object* object_Window_Target;
    ...     
};
// 创建对象
unsigned int objectId = 0;
glGenObject(1, &objectId);
// 绑定对象至上下文
glBindObject(GL_WINDOW_TARGET, objectId);
// 设置当前绑定到 GL_WINDOW_TARGET 的对象的一些选项
glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_WIDTH, 800);
glSetObjectOption(GL_WINDOW_TARGET, GL_OPTION_WINDOW_HEIGHT, 600);
// 将上下文对象设回默认
glBindObject(GL_WINDOW_TARGET, 0);

设置的选项将被保存在objectId所引用的对象中,一旦我们重新绑定这个对象到GL_WINDOW_TARGET位置,这些选项就会重新生效。

安装配置

这里跟着资料安装GLFW和GLAD
GLFW:
GLFW是一个专门针对OpenGL的C语言库,它提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文,定义窗口参数以及处理用户输入,这正是我们需要的。
官网下载最新源码,用CMake编译,在编译前选好自己使用的软件版本即可,点击Generate。编译的库glfw3.lib(注意我们用的是第3版)就会出现在src/Debug文件夹内。
配置好lib和include就能正常工作了。
GLAD:
它简化我们的代码,避免一些函数的重复性操作。GLAD是一个开源的库,它使用了一个在线服务,生成所需库文件。
打开在线服务,将语言设置为C/C++,在API选项中,选择3.3以上的OpenGL(gl)版本(更新的版本也能正常工作)。之后将模式设置为Core,并且保证生成加载器的选项是选中的。现在可以先(暂时)忽略拓展中的内容。都选择完之后,点击生成按钮来生成库文件。
GLAD现在应该提供给你了一个zip压缩文件,包含两个头文件目录,和一个glad.c文件。将两个头文件目录(glad和KHR)复制到你的Include文件夹中,并添加glad.c文件到你的工程中。
将这段代码复制到你的工程中,能顺利运行,就说明配置成功啦。

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

int main()
{
    glfwInit();
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值