《Computer Graphics with OpenGL》计算机图形学读书笔记 02——计算机图形学软件

2023-11-20

   这里是《Computer Graphics with OpenGL》英文原版第四版的读书笔记,预计每一章写一篇读书笔记。
   本篇为第二章,简要介绍计算机图形学的相关软件。
   图形学相关软件可分为两类——专业类、综合类。其中,专业类为非编程人员准备,可提供如美术、CAD绘图等功能。综合类为编程人员使用,可以通过代码直接控制绘图过程。

坐标表示

将放置好的物体显示在屏幕上要经历一系列复杂的步骤,进行若干次的坐标变换。主要步骤如下:

  1. 模型坐标空间:在其中设定好各个零部件内部的位置信息
  2. 世界坐标空间:将模型放置在世界中
  3. 观察坐标空间:将观察者(摄像机)位置设为原点,观察方向为正方向的坐标系中的顶点位置
  4. 标准坐标空间:将三维坐标转化为二维坐标,并归一化至0~1或-1~1,使其不受不同分辨率、纵横比的显示设备所影响
  5. 屏幕坐标空间:根据具体的屏幕设置将其转化为对应的像素位置信息

图形函数

一个图形包中有许多不同的功能,可以将其分类如下:

  • 基础的图形输出:点、直线、曲线、球、圆柱等等的绘制
  • 属性:用于控制如何绘制基础图形,如颜色、线型、填充方式等
  • 几何变换:大小、位置、旋转
  • (可选)模型变换:通常会提供针对复杂模型的构建功能,即使用树形结构将模型的各个零部件进行连接
  • 显示变换:将图形显示到输出设备上,如更改场景视图、投射方式、相机位置、光照等
  • 输入函数:控制输入
  • 控制操作:如清空屏幕、初始化参数等

软件标准

为了保证在某一硬件设备上使用图形包所完成的工作在其他硬件上的可移植性,需要制定具体的标准。目前存在过的标准如下:

  • Graphical Kernal System(GKS):第一个图形软件标准,主要为二维
  • Programmer’s Hierarchical Interactive Graphic System(PHIGS):GKS的扩展
  • PHIGS+:增加了三维渲染
  • Graphics Library(GL):主要为快速的实时渲染所设计
  • OpenGL:三维为主,当z=0时可表示二维,是当前最流行的图形软件包

其它图形包

这里简单列举,不做具体介绍:
Open Inventor、V

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

《Computer Graphics with OpenGL》计算机图形学读书笔记 02——计算机图形学软件 的相关文章

  • OpenGL:仅使用一个帧缓冲区并切换目标纹理

    我是否可以只创建一个帧缓冲区对象并通过在需要时切换其目标纹理来实现相同的结果 而不是使用多个帧缓冲区对象 在所有情况下这都是一个坏主意吗 如果是 为什么 我一直在实现一个功能render SetTargetTexture 在我的程序的 AP
  • 3D 图形矩阵 4x4 中最后一行的 magic 4 的用途是什么?

    当我阅读有关WebGL的书时 我看到了下一个矩阵描述 有关于书中最后一行的信息 WebGL 初学者指南 初学者指南 Diego Cantor Brandon Jones 神秘的第四排 第四排没有任何特殊之处 意义 元素 m4 m8 m12
  • glDrawElements 在 PyOpenGL 中绘制立方体

    我最近开始通过 Python 学习 OpenGL 这要归功于几个教程 尤其是 Nicolas P Rougier 的教程 http www labri fr perso nrougier teaching opengl http www l
  • glGenerateMipmap 是否在 sRGB 纹理的线性空间中执行平均?

    OpenGL 3 3 规范似乎没有要求 mipmap 生成在线性空间中完成 我能找到的只有以下内容 派生的 mipmap 数组的内部格式都与 levelbase 数组和派生数组的维度如下 第 3 8 14 节中描述的要求 的内容 派生数组是
  • 着色器/矩阵问题 - 看不到对象

    我试图在屏幕上放置一个立方体并点亮它 我想要在立方体上添加 phong 阴影 当我运行代码时 我可以看到背景图像 但看不到立方体 我相当确定立方体本身是正确的 因为我已经设法用纯色着色器显示它 我已经设法编译着色器程序 但我根本看不到立方体
  • VBO - 没有指数化的指数化

    我正在尝试将 VBO 与元素数组缓冲区一起用于我的三角形 如下所示 glBindBuffer GL ARRAY BUFFER g Buffer 0 glVertexPointer 3 GL FLOAT 0 BUFFER OFFSET 0 g
  • OpenGL 将着色器附加到程序

    有没有办法访问附加到程序的着色器 也就是说 给定一个程序 我可以做类似的事情 vertexShader getVertexShaderFromProgram program 我想在验证我的程序的函数中记录着色器编译状态 但我只保留对程序的引
  • 从文件中读取 GLSL 着色器

    我正在尝试从如下所示的文件中读取顶点和片段着色器 version 330 core in vec3 ourColor out vec4 color void main color vec4 ourColor 1 0f but when i
  • 没有着色器的 OpenGL

    我已经阅读了一些教程来编写以下代码 唯一的区别是原始教程使用 SDL 而不是 GLEW 我不明白这段代码有什么问题 它可以编译 但我没有看到三角形 教程也没有使用着色器 include
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • (定义一个宏)方便OpenGL命令调试?

    有时插入条件打印和检查需要很长时间glGetError 使用二分搜索的形式来缩小范围 其中第一个函数调用是 OpenGL 首先报告错误 我认为如果有一种方法可以构建一个宏 我可以包装所有可能失败的 GL 调用 并有条件地调用 那就太酷了gl
  • 为什么我的 FPS 相机一劳永逸地滚动?

    如果我忽略四元数代数的肮脏细节 我想我理解了旋转和平移变换背后的数学 但仍然不明白我做错了什么 为什么我的相机一劳永逸地滚动 更具体地说 我应该如何从相机的方向 旋转矩阵 计算相机视图矩阵 我正在用 Python 编写一个简约的 3d 引擎
  • 简单的线框格式?

    我正在寻找一种用于线框模型的简单文件格式 我知道 VRML u3D 等 但这些对于我的需求来说似乎很重要 我的标准是 必须有明确的规格 要么是开放的 要么是非常完善 记录的 我只需要 想要 简单的模型 顶点和边 我不想处理面孔或物体 如果格
  • WebKit 是否使用 OpenGL 来渲染 CSS 过渡?

    WebKit 是使用 OpenGL 来渲染 CSS 过渡 还是使用软件渲染 WebKit 只是一个前端 这取决于后端和硬件支持 谷歌浏览器使用skia http code google com p skia 作为后端 它可以使用软件或硬件
  • 将像素传递给 glTexImage2D() 后会发生什么?

    例如 如果我创建一个像素数组 如下所示 int getPixels int pixels new int 10 pixels 0 1 pixels 1 0 pixels 1 1 etc glTexImage2D getPixels glTe
  • OpenGL 与 Eclipse CDT + MinGW + GLEW + GLFW:未定义的参考

    Edit 与此同时 我已经弄清楚了这一点 并在下面写了详细的答案 我刚刚尝试在 Win7 上从 Express 版本的 MSVC 10 切换到 Eclipse CDT 在配置时遇到了以下简单 OpenGL 代码的问题 在 Visual St
  • 将四元数旋转转换为旋转矩阵?

    基本上 给定一个四元数 qx qy qz qw 我如何将其转换为OpenGL旋转矩阵 我也对哪个矩阵行是 向上 向右 向前 等感兴趣 我有一个四元数的相机旋转 我需要在向量中 以下代码基于四元数 qw qx qy qz 其中顺序基于 Boo
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • OpenGL - 两个纹理的幂

    OpenGL 使用二次幂纹理 这是因为由于 MipMapping 某些 GPU 只接受 2 的幂纹理 当绘制比实际更大的纹理时 使用这些二次方纹理会导致问题 我想到了一种方法来解决这个问题 即仅在我们使纹理小于实际大小时使用 PO2 比率
  • GLSL NVidia 方形神器

    当 GLSL 着色器在以下 GPU 上生成不正确的图像时 我遇到了问题 GT 430 GT 770 GTX 570显卡760 但在这些上正常工作 英特尔高清显卡 2500英特尔高清4000英特尔4400显卡740MRadeon HD 631

随机推荐