OpenGL
文章平均质量分 91
krais24
这个作者很懒,什么都没留下…
展开
-
OpenGL相机
相机在前一章中,我们讨论了视图矩阵以及如何使用视图矩阵在场景中移动。OpenGL 本身并不熟悉相机的概念,但我们可以尝试通过将场景中的所有物体向相反的方向移动来模拟相机的概念,从而给人一种我们移动的错觉。在这一章中,我们将讨论如何在 OpenGL 中设置相机。我们将讨论一个可以让您在3D场景中自由移动飞行式相机。我们还将讨论键盘和鼠标输入,最后使用自定义相机类完成。相机/视图空间当我们谈论相机/视图空间时,我们谈论的是从相机角度作为场景起源的所有顶点坐标:视图矩阵将所有世界坐标转换为相对于相机位置和原创 2021-07-29 16:17:42 · 2326 阅读 · 0 评论 -
OpenGL显示3D立方体
OpenGL显示3D立方体坐标系统在上一章中,我们学会了如何通过变换矩阵变换所有顶点来发挥我们的优势。OpenGL 期望在每个顶点着色器运行后,所有我们希望可见的顶点都处于规范化的设备坐标中。即每个顶点的xyz坐标应在-1.0到1.0之间:此范围以外的坐标将不可见。我们通常做法是在我们自己确定的范围内(或空间)中指定坐标,并在顶点着色器中将这些坐标转换为规范化的设备坐标 (NDC)。然后,将这些NDC提供给光栅器以便将它们转换为屏幕上的 2D 坐标/像素。将坐标转换为 NDC 通常是逐步完成的,我们将原创 2021-07-28 15:18:21 · 2183 阅读 · 0 评论 -
OpenGL 变换
OpenGL 变换我们现在知道如何创建对象,为它们着色或使用赋予它们一个详细的外观,但它们仍然没有那么有趣,因为它们都是静态对象。我们可以尝试通过更改其顶点并重新配置每个帧的缓冲区来移动它们,但这很麻烦,并且需要相当多的处理能力。有更好的方法来转换对象,这是通过使用(多个)矩阵对象。矩阵是非常强大的数学结构,起初看起来很可怕,但一旦你习惯了它们,它们将被证明是非常有用的。在讨论矩阵时,我们将不得不深入研究一些数学知识。然而,要充分理解变换,我们首先必须在讨论矩阵之前深入研究向量。本章的重点是为您提供我原创 2021-07-23 15:17:11 · 378 阅读 · 0 评论 -
OpenGL纹理
OpenGL纹理我们了解到,为了给我们的对象添加更多细节,我们可以使用每个顶点的颜色来创建一些有趣的图像。然而,为了获得相当的真实感,我们必须有很多顶点,以便我们可以指定很多颜色。这会占用相当多的额外开销,因为每个模型都需要更多的顶点,并且每个顶点还需要一个颜色属性。艺术家和程序员通常更喜欢使用质地. 纹理是用于向对象添加细节的 2D 图像(甚至存在 1D 和 3D 纹理);把纹理想象成一张纸,上面有漂亮的砖块图像,整齐地折叠在你的 3D 房子上,这样你的房子看起来就像是石头外墙。因为我们可以在单个图像原创 2021-07-20 15:57:41 · 911 阅读 · 0 评论 -
OpenGL着色器
OpenGL着色器着色器是运行在 GPU 上的小程序。这些程序针对图形管道的每个特定部分运行。从基本意义上讲,着色器只不过是将输入转换为输出的程序。着色器也是非常孤立的程序,因为它们不允许相互通信。一、OpenGL着色语言–GLSL着色器是用类 C 语言 GLSL 编写的。GLSL 专为与图形一起使用而量身定制,并包含专门针对矢量和矩阵操作的有用功能。着色器总是以一个版本声明开始,然后是一个输入、输出、uniforms 变量列表, 和它的主要的功能。每个着色器的入口点都在我们处理任何输入变量并在其输原创 2021-07-20 11:13:26 · 1785 阅读 · 2 评论 -
OpenGL渲染三角形
OpenGL渲染三角形在 OpenGL 中,描述的是 3D 空间,但屏幕或窗口是一个 2D 像素阵列,因此 OpenGL 的大部分工作是将所有 3D 坐标转换为适合屏幕上的 2D 像素。将 3D 坐标转换为 2D 像素的过程由 OpenGL 的图形管道完成的。图形管道可分为两个大部分:第一部分将您的 3D 坐标转换为 2D 坐标,第二部分将 2D 坐标转换为实际彩色像素。图形管道以一组 3D 坐标为输入,并将这些坐标转换为屏幕上的彩色 2D 像素。图形管道可分为几个步骤,其中每个步骤都需要前一步的输出作原创 2021-07-19 17:49:53 · 960 阅读 · 0 评论 -
创建一个OpenGL窗口
创建一个OpenGL窗口在开始创建图形之前,我们需要做的第一件事就是创建一个 OpenGL 上下文和一个用于绘制的应用程序窗口。但是,这些操作是每个操作系统中特定的,OpenGL 有目的地试图从这些操作中抽象出来。这意味着我们必须创建一个窗口、定义上下文并处理用户输入。所需工具: GLFW库+VS2019+GLAD源码GLFW库GLFW 是一个用C 编写的库,专门针对 OpenGL,GLFW是一个开源的跨平台窗口库。它封装了与操作系统相关的创建窗口的过程,为我们提供了向屏幕渲染所需的基本必需品。它原创 2021-07-15 18:31:07 · 484 阅读 · 0 评论 -
初识OpenGL
OpenGL说到OpenGL,很多人会以为是一个API(一个应用程序接口),OpenGL并不是一个API,而是一个规范,这个规范是由Khronos Group开发和维护。OpenGL规范了每个函数传入的参数和输出结果以及其应该如何执行。所以只要合乎规范,实际开发的OpenGL版本可以有不同的实现。开发实际 OpenGL 库的人通常是显卡制造商。您购买的每个显卡都支持 OpenGL 的特定版本,这是专门为该卡(系列)开发的 OpenGL 版本。由于大多数实现是由显卡制造商构建的,因此每当实现中出现错误时,原创 2021-07-15 17:00:20 · 303 阅读 · 2 评论