计算机图形学L1
LCD、CRT
光栅显示系统结构
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911185252515.png)
计算机图形系统的构成
- 软件
- 输入设备
- 输出设备
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911185423115.png)
视频显示设备简介
图形学基础算法:根据视频显示设备的特性进行设计
液晶显示(Liquid Crystal Display)--LCD
- 液晶具有各向异性
- LCD结构与工作原理:不施加电场,利用电压改变液晶的分子排列顺序,控制光通过,达到显示目的。
- 不施加电场,光通过
- 施加电场,光通过受限
- 彩色LCD
- 增加了彩色滤光器
- 背光版发出的是白光,通过滤光片RGB产生彩色。
- 可视角度
- LCD显示器光源经折射和反射后输出时有一定方向性,从大于某个角度(可视角度)观看会产生色彩失真。
- 120度为选择标准
- LCD显示器一般采用荧光背光板
- LED显示器采用发光二极管作为背光源
- LED显示器是LCD显示器的一种
阴极射线管(Cathode Ray Tube)--CRT
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911190816761.png)
持续时间和分辨率 (Persistence and Resolution)
持续时间:磷涂层被轰击后发光的持续时间(余辉)
长:利于静态复杂图象的显示;
短:利于动画显示
分辨率: CRT荧屏所能显示的不重叠的最大点数称为它的分辨率。
光栅扫描显示(Raster-Scan Display)
- 大部分采用CRT的显示器都是光栅扫描显示器
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911191052313.png)
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911191103454.png)
- 扫描线(Scan line): 屏幕的每一行称为一条扫描线。
- 像素(pixel, picture elements): 扫描线上的每个点称为一个像素。
- 刷新缓冲区(Refresh
buffer)或帧缓冲区(Frame
buffer)与显示区域对应,每个单元保存一个像素的color及其它信息。
- 例: 1024X1024,每像素24位,则要3M字节帧缓存。
- 屏幕纵横比(aspect ratio): 列数/扫描线数。
- 逐行扫描与隔行扫描
- 光栅化(Rasterization)和扫描转换(Scan conversion)
- 如何使光栅图形最完美地逼近实际图形,是光栅图形学的研究内容。
- 扫描转化算法
- 确定逼近图形的最佳像素集,并用指定的颜色或灰度设置像素的过程叫做图形的扫描转换。
随机扫描显示(Random-scan display)
彩色CRT显示器
常用彩色CRT显示器是阴罩式CRT显示器
其结构与单色CRT显示器类似,但有不同之处
■ 荧光屏的每个象素点由三个磷涂层点构成,分别发红绿蓝三种颜色的光。
■ 有三支电子枪分别对应三种颜色的点。
■ 在屏幕后有一个荫罩,上面的小孔与每个象素点对应。
■ 所看到的色彩是三种颜色混合的结果。
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911192815303.png)
OpenGL
是一个图形库,全称为Open Graphics Library
是应用程序与图形处理的接口
为移植到不同环境形成了一个开放式的OpenGL
功能模块
- 绘制几何图形
- 几何变换
- 颜色和光照
- 反走样(反混淆)
- 纹理映射
- 雾化
- 图元属性
OpenGL函数
- OpenGL核心库函数:opengl32.lib
- 核心库函数以gl开头
- 函数名本身往往指出参数个数及类型
- OpenGL实用程序库函数:glu.lib
- 这一部分函数有核心库函数实现,以glu为前缀
- 可看作是核心库函数的扩展,提供更高级的图形功能
- 扩展库
- 核心库函数是设备独立的,与操作系统和硬件无关。
- 扩展库提供的函数用来扩展窗口系统的功能
- OpenGL核心库函数:opengl32.lib
OpenGL实用工具包 freeglut
(Graphics Library Utility Toolkits)
图形库实用工具包提供与任意屏幕窗口系统进行交互的函数库
独立于屏幕窗口系统
- 简化应用程序的工作,也方便移植
GLUT库函数以glut为前缀
http://freeglut.sourceforge.net/
Version 3.2.1(Released: 29 September 2019)
GLUT函数分类
- 初始化和创建窗口
s(https://fastly.jsdelivr.net/gh/Ye2222/blogImage@main/images/image-20210911194335915.png)
Mode--可以指定显示模式
- Mode参数是一个GLUT库中预定义的可能的布尔组合
- 1:GLUT_RGBA或者GLUT_RGB。指定一个RGBA窗口,这是一个默认的颜色模式
- 2:GLUT_INDEX。指定颜色索引模式。
- 还允许你选择单缓冲区或双缓冲区窗口
- 1:GLUT_SINGLE.单缓冲区窗口。
- 2:GLUT_BUFFER.双缓冲区窗口,这是产生流畅动画必须选的
- 特殊缓冲
- 1:GLUT_ACCUM.累积缓冲区。
- 2:GLUT_STENCIL.模板缓冲区。
- 3:GLUT_DEPTH.深度缓冲区。
- 创建单颜色缓冲区、深度缓冲区的RGB窗口,用“或“(|)操作符来建立。
- glutInitDisplayMode(GLUT_RGB|GLUT_SINGLE|GLUT_DEPTH);
- 处理窗口和接收键盘和鼠标输入
- 绘制三维物体
- 后台管理
- 运行程序