OpenGL笔记(一)绘制三角形

大哥们哪位知道,OpenGL笔记(一)绘制三角形
最新回答
拿着试卷唱忐忑

2024-10-15 16:13:38

该系列将带领大家学习OpenGL,本文是基础部分,旨在配置好OpenGL项目相关依赖,并最终在屏幕上渲染出三角形。建议读者具备一定图形学基础或之前接触过tinnyrenderer系列内容。

参考资源:learnopengl.com/

中文版:learnopengl-cn.github.io...

OpenGL简介:

OpenGL是由Khronos组织制定并维护的规范,规定了一套函数的输入和输出,函数的具体实现由不同显卡厂家自行负责。OpenGL自身是一个巨大的状态机,一系列变量描述OpenGL当前的运行状态,这些状态通常被称为OpenGL上下文。

与tinnyrenderer相比,利用OpenGL可以方便地进行图像操作,如画线、绘制三角形、渲染纹理等,仅需设置好顶点数组,调用drawcall即可。这些操作大部分都将进行并行化处理,而非由CPU计算,从而提高了渲染速度。此外,OpenGL允许维护一个程序窗口,实时改变状态观察渲染结果,而非生成tga图片,极大地提高了学习效率。

实验环境:

在开始之前,需下载GLFW和GLAD依赖。GLFW帮助画图,GLAD用于获取OpenGL函数指针(OpenGL依赖于显卡厂商不同的实现,函数位置在编译期无法确定,需要运行时获取)。建议下载32位GLFW(因64位可能存在兼容问题),在中文版教程中选择C/C++语言、API 3.3及以上版本、Core配置。

为防止路径问题,建议将.h头文件组织到各自的include文件夹下。

整合依赖下载链接:...

创建项目:

打开Visual Studio,创建空项目,在解决方案同级目录下新建Dependences文件夹,将GLAD和GLFW复制到Dependences下。通过VS属性设置,将GLAD和GLFW的include、lib目录添加到包含目录、库目录中。在main.cpp中添加测试代码,初始化GLFW和OpenGL上下文,绘制空窗口。

运行失败时,请检查GLFW和GLAD的配置。

添加输入控制,例如按下ESC键关闭窗口。

渲染三角形:

引入OpenGL着色器概念,OpenGL的渲染管线分为多个步骤,包括顶点着色器、图元装配、几何着色器、光栅化、片段着色器等。顶点着色器主要进行空间变换。通过编写着色器代码、创建和链接shader,实现渲染三角形。使用顶点缓冲对象VBO存储顶点数据,通过VAO(顶点数组对象)简化数据绑定过程,提高渲染效率。

添加索引缓冲对象EBO(元素缓冲对象)以减少顶点重复,提高渲染性能。

总结:

通过本文的学习,读者将掌握OpenGL的基本配置、三角形绘制、着色器和纹理的使用,以及坐标变换和摄像机的原理。后续系列将深入探讨OpenGL的高级功能。