
OpenGL
文章平均质量分 87
注释远方
往前看并且坚持、勇敢
展开
-
OpenGL(十三)——世界光照
Light Caster :光投射(Cast)到物体的光源。现实世界中通常多种不同的光源类型共同作用在物体表面,包括平行光(定向光)、点光源、聚光。原创 2023-05-10 15:59:47 · 1286 阅读 · 1 评论 -
OpenGL(十二)——光照漫反射贴图
现实世界一个物体通常由多种材质组合而成,如一辆车轮胎和外壳材质不同,而将整个物体的材质定义为一个整体是不合理的。本节引入漫反射、镜面光贴图。原创 2023-05-09 19:22:15 · 1415 阅读 · 0 评论 -
OpenGL(十一)——材质
一、前言OpenGL材质是模拟现实世界中不同材质物体表面,如木制箱子和钢制箱子对光的反射程度不同。物体材质对接受光散射程度不同,较少散射产生较小高光点,较多散射则会产生较大高光点。前面章节定义了物体颜色、环境光照、漫反射、镜面反射,本文再添加一个反光度分量,则可以表达材质所有属性。模拟现实世界物体表面材质,会使得渲染图形接收光照后更加逼真,物体材质的所有属性分量包括环境光照ambient、漫反射光照Diffuse、镜面光照Specular Lighting、反射度Shining。原创 2023-05-09 18:14:00 · 1303 阅读 · 0 评论 -
OpenGL(十)——基础光照
现实世界光照十分复杂,冯氏光照模型是对现实世界光照的抽象,主要由3部分组成,环境ambient,漫反射diffuse,镜面specular光照。环境光照:物体永远不会是完全黑暗,使用一个环境光照常量,永远给物体一些颜色。漫反射光照:模拟光源对物体方向性影响。物体某一部分越是对着光源越亮。镜面光照:模拟有光泽物体上面的亮点,镜面光照颜色更倾向于光的颜色。原创 2023-05-08 18:55:59 · 1572 阅读 · 0 评论 -
OpenGL(九)——颜色
我们看到的物体颜色是通过光照在物体,然后反射到人眼成像,具体而言是物体不能吸收的颜色。如白光照射在蓝色物体上,它吸收了除了蓝光之外所有颜色,不吸收的蓝光反射到我们眼中。当物体颜色是多色光组合时(珊瑚色),该物体会反射不同强度的多个颜色,最终形成(珊瑚色)。原创 2023-05-08 17:04:12 · 1423 阅读 · 0 评论 -
OpenGL(八)——图像逆透视算法IPM
一、目的相机标定主要是计算 相机 映射矩阵, 确定 3D 世界 中任意点在 2D 图像中的位 置二、方法分类相机标定算法 整体可分为 人工标定法、自标定法两大类。人工标定法是预先采集不同角度标定 靶图像、提取其中特征点出相机内参数,再利用透视原理标定得到相应外参数。此类方法 准确、高效,但 无法用于 动态平台 。自标定法主要 基于场景或运动物体,此类方法可应用于动态平台中 但精度较...原创 2023-05-08 13:53:02 · 5567 阅读 · 2 评论 -
OpenGL(七)——摄像机
之前3D物体已经有了,如何在观察空间中随意移动去“游览”3D物体,需要使用到摄像机,也就是把场景中的所有物体往相反的方向移动模拟出摄像机,产生一种移动场景的效果。原创 2023-05-06 14:31:08 · 3450 阅读 · 0 评论 -
OpenGL(六)——坐标系统
OpenGL显示的顶点在(-1,1)之间,这个坐标叫做标准化设别坐标(Normalized Device Coordinate, NDC)。将物体坐标变化到最终的NDC坐标需要几个过度坐标,在这些坐标系下计算非常容易和方便。过渡坐标分别在局部空间(物体空间)、世界空间、观察空间、裁剪空间、屏幕空间。物体坐标从一个坐标系变换到另一个坐标系需要用到几个变换矩阵,最重要的几个分别是模型(Model)观察(View)投影(Projection)三个矩阵。我们的顶点坐标起始于局部坐标。原创 2023-05-05 14:15:34 · 1798 阅读 · 0 评论 -
OpenGL(五)——变换
前面了解渲染架构中uniform可以传递矩阵变换,如从RGBA到YUV,同时它也可以使物体通过矩阵变换动起来。原创 2023-05-04 16:42:54 · 703 阅读 · 0 评论 -
OpenGL(四)——纹理
为每个顶点添加颜色可以增加图形的细节,但是更多的点会导致运行效率下降。使用纹理可以增加细节,又不用指定额外的顶点。纹理是一个2D图片(也有1D和3D纹理)。除了图像外纹理也可以用来存储大量的数据,这些数据可以发送给着色器。要想把纹理映射到三角形上,必须指定三角形的每个顶点各自对应纹理的哪个部分。这样每个顶点就会关联一个纹理坐标(Texture Coordinate),表明该纹理图像的哪个片段采样,之后在图形的其它片段进行片段插值(Fragment interpolation)。原创 2023-05-04 13:43:56 · 3250 阅读 · 0 评论 -
OpenGL(三)——着色器
着色器Shader是运行在GPU上的小程序,为图形渲染管线的某个特定部分而运行。各阶段着色器之间无法通信,只有输入和输出。着色器程序需要使用GLSL语言编写。GLSL语言转为图形计算量身定制,定义了一些向量和矩阵操作。着色器开头需要有声明版本,结束输入、输出、uniform变量、main函数。main是着色器入口点,在函数中需要处理输入变量,然后输出到输出变量中。原创 2023-04-28 15:55:01 · 3443 阅读 · 0 评论 -
OpenGL(二)—— Hello World
GLSL用来编写着色器Shader程序的语言,本篇介绍了渲染常用的方法以及GLSL语言数据类型,最后写一个窗口渲染示例(与GLSL无关的)。原创 2023-04-28 12:08:13 · 1326 阅读 · 0 评论 -
OpenGL(一)——初识和搭建
渲染render是用软件从模型生成图像的过程,也表示编辑视频生成想达到的效果。模型是用特定的语言对三维物体的描述,不包括几何、视点、纹理及照明信息。OpenGL不能开发程序、构建后台,它定义了2D、3D图像渲染接口。OpenGL ES (Embed System)是OpenGL子集,针对嵌入式设备设计。Metal苹果提出的框架,将3D性能提高10倍。VulKan针对即时3D程序设计,均衡CPU/GPU使用。原创 2023-04-28 12:07:40 · 1590 阅读 · 0 评论