什么是深度 深度就像是现实世界中物体与我们自己之间的距离,而在OpenGL中,深度是像素点(可以理解为现实世界中的物体)距离相机的距离,深度信息保存在深度缓存中,深度值越大则离相机越远。...深度测试有什么作用 在OpenGL ES中默认是不开启深度测试的,不使用深度测试的时候,先绘制较近的物体,然后绘制较远的物体,当远处的物体和近处的物体出现重叠时导致近处的物体被远处的物体遮挡,这不符合实际的现象...深度测试则是可以解决这种问题,开启深度测试后,深度缓存中存储着的每个像素点都包含深度信息,当绘制新的像素时,先和深度缓存中的深度值进行比较,当深度值比深度缓存中的深度值大时(也就是离相机远)则使用原来大颜色值绘制...启用深度测试 在OpenGL ES中默认是不开启深度测试的,开启深度测试代码如下: GLES20.glEnable(GLES20.GL_DEPTH_TEST) 在每次绘制(onDrawFrame方法)时先清楚上次的深度缓存和颜色缓存...glDepthFunc方法使用方式如下: GLES20.glDepthFunc(GLES20.GL_LESS) 在 OpenGL ES for Android 绘制立方体 中是典型的深度测试用例,通过这篇文章可以查看开启深度测试和不开启的区别
1. opengl深度测试原理,“测试”理解为“检测规则”更容易懂 关闭深度测试,后绘制的团会覆盖先绘制的纹理: ? 关闭深度测试的效果,按照深度规则来执行覆盖,z坐标小的覆盖z坐标大的 ?...深度值精度 考虑到,近处的纹理要细腻,所以对近处的坐标变化要更敏感,远处的纹理粗糙可以采样模糊些。 两种深度缓冲算法: 线性深度缓冲(现实中几乎用不到) ?...线性深度缓冲 非线性深度缓冲 ? 非线性方程: ? 3....深度冲突及处理 两个靠的很近的纹理,深度缓冲没有足够的精度来决定两个形状哪个在前面,就会不断的切换前后顺序,我们以前打CS的时候,也会发现人的脚和地板画面交错闪现。...处理方案: 物体之间设置一个很微小的距离(比如0.1mm),视精度而定 提高精度,不如常见的24位深度,提升到36位精度 本章代码比较简单,参考教程原文,很容易实现:opengl-深度测试 注意!
css中有几个不同的单位表示长度,使用时数字加单位。如果长度为0,则可以省略单位。 长度单位可分为两种类型:相对和绝对。...绝对长度 绝对长度单位是一个固定的值,反应真实的物理尺寸,不依赖于显示器、分辨率、操作系统等。...具体单位以及解释如下: px像素:一个像素就相当于我们屏幕中的一个小点,屏幕实际就是由很多个像素点构成的,不同显示器像素大小不同,像素越小,显示效果就越好。 cm厘米:这个单位大家常见,不解释。...mm毫米:这个单位大家常见,不解释。 in英寸:1in = 96px = 2.54cm pt:point 。1in = 72pt pc:pica。...举例: html{ font-size:14px } div{ width:3rem; height:2.5rem } 把div大小单位换算成px是多少呢?
这几个步骤同文章一,下面主要讲解下申请缓存区(深度测试),和渲染的步骤。 1.申请缓存区(深度测试) 一般情况下我们要申请渲染缓存区,帧缓存区,如果使用深度测试也需要申请深度缓存区。...3.什么是深度测试 深度测试的概念: 深度其实就是该像素点在3D世界中距离摄像机的距离Z值 什么是深度缓冲区? 深度缓存区,就是一块内存区域,专门储存着每个像素点(绘制在屏幕上的)深度值。...有了深度缓冲区后,绘制 物体的顺序就不那么重要的。实际上,只要存在深度缓冲区,OpenGL都会把像素的深度值写入到缓冲区中。除非调用glDepthMask(GL_FALSE)来禁止写入。...其次,OpenGL会计算这些表面和观察平面的距离。如果启用了深度缓冲区,在绘制每个像素之前,OpenGL会把它的深度值和已经存储在这个像素的深度值进行比较。...代码: https://github.com/YBYHunter/OpenGL-ES-Demo/tree/master 记得Star!Star!
背景与工程定位 背景 项目组基于深度学习实现了视频风格化和人像抠图的功能,但这是在PC/服务端上跑的,现在需要移植到移动端,因此需要一个移动端的深度学习的计算框架。...工程定位 实现可实时、体积小、通用的深度学习预测框架。...实时的情况下,深度学习框架的输入和输出都在GPU端,使用CPU进行计算往往需要拷贝图像出来,算好后再传到GPU端,因此基于GPU实现的深度学习的库能持平CPU版本的效率就有足够优势了。...所幸的是,目前在移动端做好深度学习的预测就足够了,相比于兼顾训练的结构至少省去2/3的工作量。 工程实现 方案选型 GPU加速的API ?...RenderScript 这个坑比较多,文档极少,而且会有跟OpenCL一样的需要跟OpenGL同步的问题,不做考虑。
作者:Abudula__ 我们对单位很熟悉,比如说,千克,千米,米等,这些就是绝对单位,我们又有听到太阳的质量等于33个地球,这个就是相对单位。在CSS中,单位也可以分为这两类。...在第二个box里,300px的小框跟上面的框的300px一样长,而第二个框里面的50%跟第一个框的50%为不一样,这个就很好的解释了相对单位和绝对单位。...em em 也是一种相对单位,既然是相对单位,那么肯定有一个参照值。不过其参照值并不是固定不变的,而是不同的属性有不同的参照值。...vw, vh, vmin, vmax 最后要介绍的这四个单位属于 v 系单位,它们也是相对单位,是基于视窗大小(浏览器用来显示内容的区域大小)来计算的。...单位运算 除了设置以上的单位之外,我们还可以使用 calc 来进行单位运算,单位运算时可以使用各种单位进行加减乘除运算。
在 OpenGL 世界里,使用深度测试可以来防止被阻挡的面渲染到其他面的前面。 直接看一个没有使用深度测试的绘制: ?...当深度测试被启用时,OpenGL 会将一个片段的深度值与深度缓冲的内容进行对比。...OpenGL 会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为新的深度值,如果深度测试失败了,该片段将会被丢弃。 深度缓冲是在片段着色器运行之后,在屏幕空间中运行的。...OpenGL 运行我们禁用深度缓冲的写入,只需要设置它的深度掩码为 GL_FALSE 即可。...1// 设置只读的深度缓冲 2glDepthMask(GL_FALSE); 深度测试函数 OpenGL 允许修改深度测试中使用的比较运算符,允许我们控制 OpenGL 什么时候该通过或丢弃一个片段,什么时候更新深度缓冲
,开启深度测试后,OpenGL会自动帮助我们完成。...不必焦虑,OpenGL自动为我们完成了这一切,而开发者只需要简单地开启深度测试即可。 注意,这里说的深度是从OpenGL摄像机所对着的方向而言的,如下图所示: ?...小结一下,深度测试就是说OpenGL自动为我们判断所要渲染的东西的前后关系,并按某种规则来实现最后看到的是哪部分,这些说的“某种规则”是可以设置的,通常会设置为让OpenGL渲染出的来最终效果为看到的是深度最浅的部分...如何使用深度测试? 下面以Android上的OpenGL ES 2.0为例,来看看相关的方法调用,其它平台的也类似。...要使用深度测试,首先要开启深度测试: GLES20.glEnable(GLES20.GL_DEPTH_TEST); 开启了深度测试后,OpenGL会在透视除法之后执行深度测试逻辑,具体流程请见下图: ?
文章目录 一、OpenGL 状态机概念 二、OpenGL 矩阵概念 上一篇博客 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为...OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 进行了 OpenGL 渲染环境初始化 ; 本篇博客简单介绍 OpenGL 中的一些理论概念 ; 一、OpenGL 状态机概念 ----...OpenGL 是一个状态机 , 其中包含了很多状态 , 简单列举下面的几项 : OpenGL 中的 矩阵 Matrix , 包含了 投影 ( Projection ) 矩阵 , 模型 ( Model...绘制 3D 图形时 , 就会读取当前的状态机参数 , 利用这些状态机进行绘制 , 而我们就在绘制之前设置上述一系列的状态机 , 确保 OpenGL 绘制按照我们设想的进行 ; 在上一篇博客 【OpenGL...】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 中Windows 窗口创建完成后
Red(颜色单词) #333333(16进制模式) rgb(255,255,255) rgb模式
abaqus的计算是基于量纲计算的,对于具体的量(长度、力、应力等)没有固定的单位,但是需要保证计算过程中采用的单位统一。...在进行应力强度因子、裂纹扩展率等有限元模拟过程中需要输入相关的材料参数,在材料手册查到的材料参数有时需要转化为统一的单位输入到软件中,最常用的方法把所有的量纲都转换为国际单位制(基本的量有:长度m,时间...在软件中常用的单位有: abaqus常用单位
振动一般可以用以下三个单位表示:mm、mm/s、mm/(s^2)。 mm振动位移:一般用于低转速机械的振动评定; 7丝就是70um,是振动位移值。...mm/s也不是mm和s去和设备转动中的位移和时间挂钩,只是速度的单位,说的是转动造成的设备振动速度的大小。同样的mm/(s^2)说的是振动的加速度的大小。
OpenGL(五)-- OpenGL中矩阵的变换 前言 照常提出几个问题,希望通过阅读可以找到答案。 对物体3维的2维投影进行位移,有几种方式? 模型视图矩阵代表了什么?...确立透视投影需要的参数: aspect(远/近裁切面的宽高比,它本身也是视口) , near(近裁切面位置) , far(远裁切面位置),投影角度,视口位置 以上图片都出自:_superhuihui-OpenGL...中涉及到的矩阵变换 在OpenGL中矩阵的计算方式 // 矩阵计算 m3dMatrixMultiply44(ModelViewMatrix(模型视图矩阵),ViewMatrix(观察者矩阵), ModelMatrix...如果想要了解具体矩阵是如何计算的:3D数学 矩阵知识 矩阵栈 在计算时会发现这种计算会导致物体唯一无法重置,为了解决这种问题OpenGL提出了矩阵栈的概念。栈这个概念应该是很熟悉了吧!
OpenGL(六)-- 渲染技巧:正背面剔除、深度测试、多边形偏移、颜色混合 通过一个基础案例来了解这些渲染技巧:正背面剔除、深度测试、多边形偏移。应该更容易理解。...放到OpenGL里虽然作为观察者已经移动到隐藏⾯了,但是OpenGL还是认为它还是隐藏⾯也就是背面,不需要绘制,这就造成了我们看到的一幕。这就是OpenGL中的隐藏⾯消除。...OpenGL中的正面、背面 上文中提到了一个概念背面。 正面 背面都是OpenGl人为定义的概念。 正面:点的绘制顺序是:逆时针 背面:点的绘制顺序是:顺时针 ?...所以在OpenGL中深度值是这样计算的: ? far、near是提供投影矩阵设置时使用的可见视图截锥的远近值。公式中的Z值也是矩阵变换后的值。...解决Z-fighting 当然OpenGL也帮我们想到了,并给出了解决方案多边形偏移,顾名思义就是对深度相同的物体进行微妙的移动。
-Wc < Xc,Yc,Zc 然后,openGL会建视锥体裁剪剔除多面体的边缘。...我们需要为唯一的z值做裁剪和深度测试,另外,我们应该能够对他取消投影(逆变换)。因此,我们知道Z值不依赖x和y值,所以,我们借用w分量去寻找Zn和Ze之间的关系。...完成投影矩阵: OpenGL Perspective Projection Matrix 翻译: openGL透视投影矩阵 This projection matrix is for a general...如果范围[-n,-f]越来越大,则会导致深度精度问题(z-fighting);对远平面做一点小的改变对Zn的值没有影响。n和f之间的距离 n 和 f 应尽可能短,以尽量减少深度缓冲精度的问题。...Comparison of Depth Buffer Precisions 翻译: 深度缓冲精度比较 Orthographic Projection 翻译: 正交投影 Orthographic Volume
基于pod的OpenGL环境配置 依赖准备 ---- 所需依赖: CLTools glew libGLTools.a OpenGL.framework、GLUT.framework(这部分依赖于系统动态库...工程创建 ---- 首先需要明确的是OpenGL是基于Mac端的,所以创建的Demo也得是MacOS 当然也有基于iOS的OpenGL ES,环境配置后续放出。 ?...argc, argv); /*初始化双缓冲窗口,其中标志GLUT_DOUBLE、GLUT_RGBA、GLUT_DEPTH、GLUT_STENCIL分别指 双缓冲窗口、RGBA颜色模式、深度测试
与 CSS 相比,WXSS 扩展的特性有: 尺寸单位 样式导入 1.1、尺寸单位 rpx(responsive pixel): 可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。...background:orange; height: 750rpx; font-size: 70rpx; } 小屏幕时: 大屏幕时: 屏幕大时字体、高与宽都同时变大,rpx是响应式的相对刻度单位
OpenGl.png
px pixel像素点,最常用的单位 % percent百分比,经常用到 em element,1em等于元素字体的尺寸 rem rem=root element,rem等于根元素字体的尺寸 vw viewport...width,可视区域宽度的1% vh viewport height,可视区域高度的1% vmin vw与vh中较小的那一个作为单位 vmax vw与vh中较大的那一个作为单位 较不常用的单位 cm:
领取专属 10元无门槛券
手把手带您无忧上云