OpenGL小白到精通(中级篇)(附源码+课件)

okkaandw · · 20 次点击 · 开始浏览    置顶

/s/1s7m4sgYyWpCosZL5y_7Qzw 提取码:8o9m 一、什么是OpenGL OpenGL(Open Graphics Library)是一个跨编程语言、跨平台的编程图形程序接口,它将计算机的资源抽象称为“OpenG的对象”,将资源的操作抽象为“OpenGL指令”。 OpenGL ES(OpenGL for Embedded Systems)是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,去除了许多不必要和性能较低的API接口。 本文介绍的OpenGL是基于OpenGLES 3.0的版本,也是目前覆盖率最高的OpenGL版本,目前被广泛运用在各种终端设备上。 OpenGL是图形API,因此可以说所有的运算和结果最终都是需要通过图像进行输出。既然要绘图,那必然就需要有一块画板,帧缓冲区就是OpenGL中的画板。但是特别需要注意的是,帧缓冲区不是常规意义缓冲区,它并不是实际存储数据的对象,类似画画的时候,需要在画板上放一块画布,才能实际在画布上进行绘画,这些画布可以是纹理(Texture)或者是渲染缓冲区(RenderBuffer),而放置这些画布的位置被称为帧缓冲区的附着(Attachment)。 二、核心配置文件与新引入的功能 OpenGL 3.3引入了核心配置文件的概念,它允许开发者使用一套简化的API来构建应用程序,同时提供了更加现代化的图形特性。这些核心配置文件摒弃了过时的OpenGL功能,强化了着色器语言GLSL的能力,并推动开发者向更加灵活的编程模式转变。 例如,核心配置文件3.3包含了: - 顶点数组对象(VAO) - 核心着色器程序(通过GLSL编写) - 多重采样抗锯齿(MSAA)的使用 这些特性为开发者提供了更高的性能和更大的灵活性,但同时需要开发者更深入地理解OpenGL的内部工作原理 三、核心特性在现代图形编程中的应用 核心模式的核心特性为现代图形编程带来了一系列优势: - 着色器可以根据需要自定义,提供更复杂的视觉效果。 - 纹理和顶点缓冲对象(VBOs)的使用减少了对显存的浪费,提升了渲染效率。 - 使用核心特性可以更有效地利用现代显卡的并行处理能力。 使用核心模式编程时,开发者需要管理许多底层细节,如设置顶点属性指针、配置视口、进行着色器编译和链接等。下面的代码片段展示了如何使用核心模式创建一个简单的OpenGL程序。 // 创建并绑定顶点数组对象 GLuint VAO; glGenVertexArrays(1, &VAO); glBindVertexArray(VAO); // 创建和配置顶点缓冲对象(VBO) GLuint VBO; glGenBuffers(1, &VBO); glBindBuffer(GL_ARRAY_BUFFER, VBO); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); // 配置顶点属性指针 glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); glEnableVertexAttribArray(0); // 解绑VBO和VAO glBindBuffer(GL_ARRAY_BUFFER, 0); glBindVertexArray(0); // 渲染循环 while (!glfwWindowShouldClose(window)) { glDrawArrays(GL_TRIANGLES, 0, 3); // 其他渲染逻辑... } 四、如何搭建OpenGL环境 要搭建可运行的opengl环境,需要一下几个部分: C++运行环境 如果使用Windows电脑,我们推荐使用Microsoft Visual Studio ;如果在Mac上,我们推荐使用Xcode. OpenGL/GLSL 要使用GL肯定要配置可用的GL库了,具体如何配置的在这就不详细介绍了 MacOS 出厂应默认安装,可直接使用 窗口管理库 OpenGL实际上并不是把图像直接绘制到计算机屏幕上,而是将之渲染到一个帧缓冲区,然后由计算机来负责把帧缓冲区中的内容绘制到屏幕上的一个窗口中。有不少库都可以支持这一部分工作。一个选择是使用操作系统提供的窗口管理功能,比如Microsoft Windows API。但这通常不实用,因为需要很多底层的编码工作。GLUT库曾经是一个很流行的选择,但现在已经被弃用了。它的一个现代化的变体是freeglut库。其他相关的选项还有CPW库、GLOW库、GLUI库等。 GLFW是最流行的选择之一,它内置了对Windows、macOS、Linux和其他操作系统的支持。它可以在其官网下载,并且需要在要使用它的计算机上编译。 GLFW的安装: windows同样可以参考上边链接,macos建议使用homebrew进行安装。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

20 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传