OpenGL笔记(一)绘制三角形
发布网友
发布时间:2024-10-03 10:40
我来回答
共1个回答
热心网友
时间:2024-11-28 19:43
该系列将带领大家学习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的高级功能。