![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL
文章平均质量分 73
笃笃前行
努力多一点,成就也会多一点
展开
-
OpenGL-面剔除
OpenGL-面剔除环绕顺序如果我们想象任何一个闭合形状, 它的每一个面都有两侧,每一侧要么面向用户,要么背对用户。如果我们能够只绘制面向观察者的面呢?这正是 面剔除(Face Culling) 所做的。OpenGL能够检查所有面向(Front Facing)观察者的面,并渲染它们,而丢弃那些背向(Back Facing)的面,节省我们很多的片段着色器调用(它们的开销很大!)。但我们仍要告诉O...原创 2019-01-21 23:19:01 · 281 阅读 · 0 评论 -
OpenGL-混合
OpenGL-混合丢弃片段混合渲染半透明纹理不要打乱顺序混合(Blending) 通常是实现物体 透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。丢弃片段所以当添加像草这样的植被到场景中时,我们不希望看到草的方形图像,而是只显示草的部分,并能看透图像其余的部...原创 2019-01-21 23:08:51 · 117 阅读 · 0 评论 -
OpenGL-模板测试
OpenGL-模板测试应用 物体轮廓当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行 ,和深度测试一样,它也可能会 丢弃片段。接下来,被保留的片段会进入深度测试 ,它可能会丢弃更多的片段。模板测试是根据又一个缓冲来进行的,它叫做 模板缓冲(Stencil Buffer) ,我们可以在渲染的时候更新它来获得一些很有意思的效果。一个模板缓冲中,(通常)每个模板值(S...原创 2019-01-20 23:25:33 · 381 阅读 · 0 评论 -
OpenGL-深度测试
OpenGL-深度测试深度缓冲提前深度测试(Early Depth Testing)启用深度测试只读深度缓冲深度测试函数深度值精度深度冲突防止深度冲突深度缓冲深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息 ,并且(通常)和颜色缓冲有着一样的宽度和高度。深度缓冲是由窗口系统自动创建的,它会以16、24或32位float的形式储存它的深...原创 2019-01-20 23:01:57 · 930 阅读 · 0 评论 -
opengl-模型加载
opengl-模型加载模型加载库网格初始化渲染模型导入3D模型到OpenGL从Assimp到网格索引材质重大优化模型加载库一个非常流行的模型导入库是 Assimp,它是 Open Asset Import Library(开放的资产导入库)的缩写** Assimp数据结构的(简化)模型如下 **网格OpenGL中定义一个顶点,每个顶点包含一个位置向量、一个法向量和一个纹理坐标向量s...原创 2018-12-24 14:47:07 · 664 阅读 · 1 评论 -
opengl-多光源
opengl-多光源多光源定向光点光源合并结果多光源为了在场景中使用多个光源,我们希望将光照计算封装到GLSL函数中。这样做的原因是,每一种光源都需要一种不同的计算方法,而一旦我们想对多个光源进行光照计算时,代码很快就会变得非常复杂。如果我们只在main函数中进行所有的这些计算,代码很快就会变得难以理解。当我们在场景中使用多个光源时,通常使用以下方法:我们需要有一个单独的颜色向量代表片段的输...原创 2018-12-24 11:27:45 · 613 阅读 · 0 评论 -
opengl-投光源
投光源定义平行光点光源衰减实现衰减聚光手电筒平滑/软化边缘定义将光投射(Cast)到物体的光源叫做投光物(Light Caster)平行光当一个光源处于很远的地方时,来自光源的每条光线就会近似于互相平行。不论物体和/或者观察者的位置,看起来好像所有的光都来自于同一个方向。当我们使用一个假设光源处于无限远处的模型时,它就被称为定向光,因为它的所有光线都有着相同的方向,它与光源的位置是没有关系...原创 2018-12-24 11:03:06 · 230 阅读 · 0 评论 -
openg-光照贴图
光照贴图漫反射贴图镜面光贴图采样镜面光贴图总结一句话,就是将之前的纯色,转换成读取贴图中的颜色来替代漫反射贴图struct Material { sampler2D diffuse; vec3 specular; float shininess;};...in vec2 TexCoords;注意我们将在片段着色器中再次需要纹理坐标,所以我们...原创 2018-12-10 15:44:40 · 367 阅读 · 0 评论 -
opengl-材质
材质设置材质程序中设置适当的uniform,对物体设置材质了在OpenGL中模拟多种类型的物体,我们必须为每个物体分别定义一个 材质(Material) 属性材质属性 着色器中#version 330 corestruct Material { vec3 ambient; vec3 diffuse; vec3 specular; float shinine...原创 2018-12-10 14:43:39 · 2027 阅读 · 0 评论 -
opengl-光照
光照冯氏光照模型(Phong Lighting Model)环境光照全局照明(Global Illumination)算法环境光照漫反射光照法向量计算漫反射光照镜面光照现实世界的光照是 极其复杂 的,而且会受到诸多因素的影响,这是我们有限的计算能力所 无法模拟 的。因此OpenGL的光照使用的是 简化的模型,对现实的情况进行近似冯氏光照模型(Phong Lighting Model)冯氏光照...原创 2018-12-10 13:48:33 · 382 阅读 · 0 评论 -
OpenGL-摄像机
摄像机概念摄像机/观察空间摄像机位置摄像机方向右轴上轴Look At自由移动欧拉角移动缩放概念OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往 相反方向移动 的方式来模拟出摄像机,产生一种 我们在移动的感觉,而不是场景在移动 。摄像机/观察空间讨论摄像机/观察空间(Camera/View Space)的时候,是在讨论以摄像机的视角作为场景原点时场景中所有...原创 2018-11-19 17:19:21 · 335 阅读 · 0 评论 -
Opengl-变换&矩阵
opengl-变换&坐标系统向量向量与标量运算向量取反向量加减长度向量点乘叉乘矩阵的概念行向量和列向量矩阵加减法标量和矩阵乘法矩阵和矩阵乘法矩阵与向量相乘单位矩阵缩放位移齐次坐标(Homogeneous Coordinates)旋转实践GLM把矩阵传递给着色器向量定义: 向量是一个既有大小又有方向的量(联系位移和速度的概念)理解向量把握:向量的大小就是向量的长度(模),向量的长度...原创 2018-11-05 21:50:23 · 415 阅读 · 0 评论 -
坐标系统
opengl-坐标系统概述局部空间世界空间观察空间裁剪空间投影正射投影透视投影组合研究坐标系,把握住以下三点:1、原点;2、坐标轴正方向;3、坐标单位物体的 顶点 在最终转化为 屏幕坐标 之前还会被变换到多个坐标系统(Coordinate System)。将物体的坐标变换到几个 过渡坐标系(Intermediate Coordinate System) 的优点在于,在这些特定的坐标系统中,一...原创 2018-11-06 21:28:15 · 1026 阅读 · 0 评论 -
openGL环境搭建-VS2015
OpenGL-环境搭建https://learnopengl-cn.github.io/01 Getting started/02 Creating a window/这里按步骤执行注意CMake要用管理员权限执行无法打开pdb文件参考https://jingyan.baidu.com/article/cdddd41cb0ac6f53cb00e1bb.html...原创 2018-10-24 21:40:44 · 284 阅读 · 0 评论 -
OpenGL-三角形
OpenGL-三角形VAO/VBO/EBO图形渲染管线顶点着色器(Vertex Shader)图元装配(Primitive Assembly)几何着色器(Geometry Shader)光栅化阶段(Rasterization Stage)片段着色器(Fragment Shader)Alpha测试和混合(Blending)阶段顶点输入标准化设备坐标(Normalized Device Coordin...原创 2018-10-24 21:21:57 · 410 阅读 · 1 评论 -
OpenGL-纹理
OpenGL-纹理纹理纹理环绕方式纹理过滤多级渐远纹理加载与创建纹理生成纹理应用纹理纹理单元多个纹理纹理纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来添加物体的细节,除了图像以外,纹理也可以被用来储存大量的数据,这些数据可以发送到着色器上纹理环绕方式纹理坐标的范围通常是从(0, 0)到(1, 1)环绕方式描述GL_REPEAT对纹理的默认行为。重复纹理...原创 2018-10-29 01:04:04 · 301 阅读 · 0 评论 -
OpenGL-着色器
OpenGL-着色器定义GLSL典型结构数据类型输入与输出Uniform多属性着色器自定义着色器类定义着色器(Shader)是运行在GPU上的小程序。这些小程序为图形渲染管线的某个特定部分而运行。从基本意义上来说,着色器只是一种把输入转化为输出的程序。着色器也是一种非常独立的程序,因为它们之间不能相互通信;它们之间唯一的沟通只有通过输入和输出。GLSL典型结构#version versi...原创 2018-10-28 15:49:00 · 1277 阅读 · 0 评论