摘要:摄像机/观察空间 当我们讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有的顶点坐标:观察矩阵把所有的世界坐标变换为相对于摄像机位置与方向的观察坐标。要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向、一个指向它右测的向量以及一个
阅读全文
摘要:概述 为了将坐标从一个坐标系变换到另一个坐标系,我们需要用到几个变换矩阵,最重要的几个分别是模型(Model)、观察(View)、投影(Projection)三个矩阵。我们的顶点坐标起始于局部空间(Local Space),在这里它称为局部坐标(Local Coordinate),它在之后会变为世界
阅读全文
摘要:顶点数组对象:Vertex Array Object,VAO 顶点缓冲对象:Vertex Buffer Object,VBO 索引缓冲对象:Element Buffer Object,EBO或Index Buffer Object,IBO 渲染管线 在OpenGL中,任何事物都在3D空间中,而屏幕和
阅读全文
摘要:关于纹理 可以为每个顶点添加颜色来增加图形的细节,从而创建出丰富的图像。想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销.纹理是一个2D图片,它可以用来添加物体的细节,这样就可以让物体非常精细而不用指定额外的顶点。 为了能够把纹理映射(Map)到三角形上,
阅读全文
摘要:opengl opengl是一个由 "Khronos组织" 制定并维护的规范(Specification) 。是一系列的图形软件编程接口,和gdi类似。opengl有很多封装的库最有名的GLFW库。接下来很多东西以GLFW 为例子来说明一些api的使用问题,但这并不影响opengl本身的逻辑表述。
阅读全文
摘要:如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变物体的顶点并且重配置缓冲区从而使它们移动,但这太繁琐了,而且会消耗很多的处理时间。我们现在有一个更好的解决方案,使用(多个)矩阵(Matrix)对象可以更好的变换(Transf
阅读全文
摘要:GLSL 着色器是使用一种叫GLSL的类C语言写成的。GLSL是为图形计算量身定制的,它包含一些针对向量和矩阵操作的有用特性。 着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变
阅读全文
摘要:关于对象 加上封装后的布局成本 c语言中如下声明一个结构体 struct point3d 转化为class Point3d之后 封装带来的布局成本增加了多少?实际是没有增加布局成本的。3个数据成员直接在class object内,member function在classs声明却不出现在class
阅读全文