计算机图形学(第四版)学习笔记--第3次

本文介绍了OpenGL的学习过程,包括OpenGL作为标准的特性,常用的辅助库选择,以及其状态机工作模式。重点讲解了OpenGL的专业词汇,如渲染管线、着色器、顶点缓冲对象等,并概述了基本的OpenGL绘图流程。此外,提到了学习资源和一个简单的代码分析,以帮助初学者理解。最后,作者分享了接下来将学习OpenSceneGraph,并意识到理解OpenGL对于掌握OSG的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

好几天没写总结了,主要是一开始就看到OpenGL一堆的函数,还有一堆的预定义常量,还有好多概念流程,很懵逼,没有总体的概念流程,不知道如何下手。这几天看的有些头绪了,总结一下。

1.OpenGL理解

1.OpenGL是一个标准,也就是只规定了函数的输入和输出,没有具体的实现,具体的实现应该是各显卡硬件公司实现的。因此就会看到好多第三方库GLUT,GLFW,GLEW,GL3W…,刚入门对这些库也很蒙,不知道该选哪个。GLUT和GLFW差不多,都是画窗口的(还有其他功能),但是GLUT很久没更新了。GLEW,GL3W和GLAD差不多,应该是提供接口地址的,听说GLAD更新一点?我最后用了GLFW和GLAD;

2.OpenGL其实是一个“状态机”。开始的时候对“状态机”如何体现在OpenGL上很迷惑。之后似乎慢慢明白了。“状态机”就是时刻监视“状态”,如果“状态”改变,之后的绘图也会发生改变。例如,如果你窗口的底色的状态改变了,在下一次绘图的时候,窗口底色就会改变。OpenGL有很多“状态”(具体有哪些,这个以后理解了再写)

3.还看到OpenGL是一种“客户端和服务端”工作模式,具体还不太明白。

2.OpenGL的专业词汇

  • 渲染管线:把一个3维图形的坐标转变为2维图像的流程。
  • 着色器:给图形上色的程序,运行在GPU上,有自己的语言。
  • 顶点缓冲对象(Vertex Buffer Object): 一个调用显存并存储所有顶点数据供显卡使用的缓冲对象。
    顶点数组对象(Vertex Array Object): 存储缓冲区和顶点属性状态。
    索引缓冲对象(Element Buffer Object): 一个存储索引供索引化绘制使用的缓冲对象。
  • 纹理:就是给图形表面的纹理,看起来更好看更真实一点。

3.OpenGL基本绘图流程

具体参考 https://learnopengl-cn.github.io/ 这个学习网站。
下图是我自己这几天总结的流程图,只是入门的内容,更深一步的以后再加入。
在这里插入图片描述
下面是对上面那个网站中的一个例子进行简单分析:(汉字注释)。基本是按照上图把程序分开的,至于某些模块的顺序,目前还不是很确定。先整体搞清程序,然后再逐个突破。

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

#include <glm/glm.hpp>
#include <glm/gtc/matrix_transform.hpp>
#include <glm/gtc/type_ptr.hpp>

#include <learnopengl/shader_m.h>

#include <iostream>

void framebuffer_size_callback(GLFWwindow* window, int width, int height);
void processInput(GLFWwindow *window);

// settings
const unsigned int SCR_WIDT
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值