首页 > 其他分享 >OpenGL(1) ->概念&介绍

OpenGL(1) ->概念&介绍

时间:2022-11-22 10:34:36浏览次数:36  
标签:10 函数 OpenGL 分辨率 介绍 概念 坐标 屏幕


文章目录

  • ​​一、计算机图形系统​​
  • ​​二、相关概念​​
  • ​​1、分辨率​​
  • ​​2、屏幕坐标系​​
  • ​​三、OpenGL图形软件包​​
  • ​​1、 简介​​
  • ​​2、四种变换​​
  • ​​四、OpenGL的数据处理流程​​
  • ​​五、OpenGL的相关库介绍​​
  • ​​1、gl.h(核心库)​​
  • ​​2、glu.h (实用库)​​
  • ​​3、glaux.h (辅助库)​​
  • ​​4、glut.h (实用工具包)​​
  • ​​5、freeglut.h​​
  • ​​6、glew.h​​
  • ​​7、glfw.h​​
  • ​​六、库函数命名规则 & 数据类型​​

一、计算机图形系统

  • 计算机图形系统的结构
  • 计算机图形系统的功能
  • 其中图形输入设备包括:

二、相关概念

1、分辨率

  • ​光点​​:指电子束打在显示器荧光屏上,显示器能显示的最小发光点
  • ​像素点​​:指图形显示在屏幕上时,按当前图形显示分辨率所能提供的最小元素点
  • ​屏幕分辨率(光栅分辨率)​​:它决定了显示系统物理意义上最大可能的分辨率,任何显示控制控制器提供的分辨率也不能超过它
  • 分辨率通常用​​水平方向上光点数​​x​​垂直方向上光点数​​来表示
  • 在最高分辨率下,一个光电对应一个像素;若设置低于最高分辨率,则一个像素可能覆盖多个光点

2、屏幕坐标系

  • ​屏幕坐标系​​:用于描述频幕上某一点的位置

OpenGL(1) ->概念&介绍_二维

三、OpenGL图形软件包

1、 简介

  • OpenGL是一个功能强大的图形库,可用于开发包含光照、纹理、透明、阴影等多种特殊视觉的三维图形
  • 它是一个与软硬件无关的三维图形软件包,可运行于多种窗口系统上
  • 它的底层是用C/C++编写的,任何主流平台都自带GL接口库,通过使用GL的库函数来操作显卡的绘图功能

2、四种变换

三维空间坐标下的物体要呈现在二维的屏幕坐标系中,需要进行空间坐标变换。我们用照相机拍照这一过程这一过程来说明物体从三维描述到二维描述的过程

  • ​视点变换​​:相当于将取景框对准目标物体,调整相机位置和镜头朝向。
  • ​模型变换​​:相当于设置物体位置和空间状态,对物体进行旋转、平移和缩放。
  • ​投影变换​​:相当于调焦过程,将三维物体投影到二维屏幕上。包括​​正射投影​​和​​透视投影​​两种
  • ​视口变换​​:相当于选择相纸尺寸并冲洗底片,规定二维投影的显示大小和范围

OpenGL(1) ->概念&介绍_计算机图形_02


OpenGL使用齐次坐标(x,y,z,w)来描述物体坐标,利用它,可以将各种空间坐标变换用矩阵与向量相乘的一般向量运算表示,可以参考关于齐次坐标的理解(经典)。每进行一次空间坐标变换,OpenGL都会生成一个4x4阶的变换矩阵,假设某点坐标为 v(x,y,z,w),进行一次空间变换(矩阵M)后,坐标变为 Mv,再进行一次空间变换(矩阵N)后,坐标变为 MNv

四、OpenGL的数据处理流程

OpenGL(1) ->概念&介绍_屏幕坐标_03

  1. 构造几何要素(点、线、多边形、位图),创建对象的数学描述
  2. 在三维空间上放置对象,选择合适的场景观察点
  3. 计算对象颜色(颜色可能直接定义,也可能由光照条件及纹理间接给出)
  4. 光栅化,把对象的数学描述和颜色信息转换到屏幕的像素。另外也可执行消隐及对象素的操作
五、OpenGL的相关库介绍

OpenGL(1) ->概念&介绍_OpenGL_04

1、gl.h(核心库)

  • 包含115个基本函数
  • 函数以gl开头(如​​glColor3f()​​)
  • 完成图元的定义、几何变换、投影等,都是最基本的操作

2、glu.h (实用库)

  • 包含43个函数
  • 函数以glu开头(如​​gluPrespective()​​)
  • 对核心库gl.h进行部分封装,简化了使用操作,适合更高层的图形处理,如曲线曲面生成、图像操作等。如果计算能力比较强,只用核心库gl.h也可以实现这些操作

3、glaux.h (辅助库)

  • 包含31个函数
  • 函数以aux开头(如​​auxInitWindow()​​)
  • 主要用于窗口管理

4、glut.h (实用工具包)

  • 它是辅助库的功能更强的替代品,用于隐藏不同窗口系统API的复杂性,具有跨平台性
  • GLUT的子程序的前缀使用”glut”(如​​glutCreateWindow()​​)
  • 主要用于窗口管理
  • 注意此库中已包含了gl.h​glu.h​,故不需再重复包含

5、freeglut.h

  • 常见的glut是个闭源库,且很多年没有更新了。freeglut是一个开源且兼容glut的库,一直在维护,可以理解为glut的替代

6、glew.h

  • GLUT或者FREEGLUT主要是1.0的基本函数功能;GLEW是使用OPENGL2.0之后的一个工具函数
  • 不同的显卡公司有时会发布一些专门性的扩展函数,用户需要寻找最新版的glext.h才能使用。而GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。

7、glfw.h

  • GLUT的另一个替代库
  • 具有轻量级、开源、跨平台等特性
  • 不能完全兼容glut函数
六、库函数命名规则 & 数据类型

OpenGL(1) ->概念&介绍_屏幕坐标_05


OpenGL(1) ->概念&介绍_屏幕坐标_06




标签:10,函数,OpenGL,分辨率,介绍,概念,坐标,屏幕
From: https://blog.51cto.com/u_15887260/5876712

相关文章

  • 前端 堆、栈 概念和区别
    1.概念栈:先进后出,由操作系统自动分配释放,存放函数的参数值、局部变量值等。其操作方式类似于数据结构中的栈;是一种运算受限的线性表;堆:先进先出,动态分配的空间一......
  • pytest-介绍
    1、pytest简单介绍pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活,容易上手支持参数化能够支持简单的单元测试和复杂的功能测试,还可以用来做se......
  • Java - HuTool工具的介绍与使用(总)
    本篇主要介绍HuTool工具,其是java工具类,对于一些静态方法进行封装,虽然很小,但很全,里面拥有平时我们会用到的工具类,就无需我们自己去封装了以前我还自己去封装,emmm,我真的......
  • K8s介绍
    K8s介绍k8s是一个编排容器的工具,其实也是管理应用的全生命周期的一个工具,从创建应用,应用的部署,应用提供服务,扩容缩容应用,应用更新,都非常的方便,而且可以做到故障自......
  • python中的字符串的常用方法介绍
    a="alxeLi金角大王"   #创建一个字符串来演示方法的功能结果。一下都使用这个字符串演示。首先要了解的常识性的知识点是:字符串是不可变的序列。所有对字符串的......
  • 第二类增值电信业务经营范围/增值电信业务经营许可证B2类介绍
    第二类增值电信业务经营范围,你听说过吗?其实增值电信业务许可证是互联网很重要的资质,基础电信业分为A1和A2。电信业务分为B1和B2,龙翊信安就讲讲B类业务。常见的资质我们也在......
  • mysql中数据页的相关概念
    ​概念在InnoDB存储引擎中,所有的数据都被逻辑地存放在表空间中,表空间(tablespace)是存储引擎中最高的存储逻辑单位,在表空间的下面又包括段(segment)、区(extent)、页(page),他们之......
  • Laravel中的基本概念
    一.什么是DI依赖注入/IOC控制反转DI依赖注入啥都不说,直接上代码<?phpclassUserController{private$user;function__construct(UserModel$u......
  • QT + OpenGL
    1、QT+Opengl的优势1)安装简单,QT借助于Qt的封装,无需配置第三方库如:GLFW+GLADGLFWGLADGLFW解决操作系统层面的不同GLAD使得代码可以用于不同的Opengl驱动......
  • 01.综合介绍
    框架:比如建房子,地基承重墙房顶就是框架,必须完善,禁不起错误房子里面:粉刷墙面,铺地板,容错率高,符合实际场景,灵活性强框架可以理解成软件半成品,帮你做了写基础操作,在基础上......