首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

音视频技术基础(四)-- OpenGL

实现及规范 OpenGL的底层由C语言实现,专注于图形渲染处理,在3.2版本之前,OpenGL使用立即渲染模式(Immediate mode),隐藏了底层的细节,容易使用和理解,但是效率太低;2009年...如果有接触过浏览器图形渲染的同学,那肯定熟悉WebGL,他就是基于OpenGL ES 2.0在Web浏览器中的进行3D渲染的API 移动端上除了OpenGL ES还常见到EGL(Embedded-System...OpenGL图形渲染管线的流程如右图,图形渲染管线的作用是将3D坐标转换为2D坐标(OpenGL中任何事物都是在3D空间中),将2D坐标转换为实际有颜色的屏幕像素点。...EBO 索引缓冲对象(Element Buffer Object),记录VBO中的数据索引。...纹理(texture) 纹理是一个2D图片(也有1D和3D的纹理),它可以用来添加物体的细节。

2K40

深度学习-数学基础

在训练和测试过程中需要监控的指标(metric):如果是分类问题一般预测正确占总预测的比例 神经网络中的数学术语 张量 张量:数据的维度或者是数据的容器 标量:仅包含一个数字的张量叫作标量;切记是一个数字...,不是一维数组,也称为0D张量 向量:数字组成的数组叫作向量(vector)或一维张量(1D 张量) 矩阵:2维张量,也称为2D张量 3D张量:若干个2D张量组成3D张量 4D张量:若干个3D张量组成...属性 轴的个数:3D张量有3个轴,类似坐标系 形状:整数元组(元组的概念相见python基础),表示每个周的维度大小,如2*2的矩阵形状为(2,2) 数据类型:float32、uint8、float64...图像:4D张量形状为(样本, 图形高, 图形宽, 色彩通道) 视频:5D张量,形状为(样本, 帧数, 图形高, 图形宽, 色彩通道) 张量计算 逐元素计算 遍历整个张量,每个元素进行计算,如张量的加法运算...其中最核心的部分是第四步更新权重,神经网络使用求导和梯度下降的方式进行优化,为了避免算法的复杂,因此每次就行抽样,这样的方式也叫坐小批量随机梯度下降(mini-batch stochastic gradient

1.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OpenGL ES _ 着色器_纹理图像

    学习是一件开心的额事情 学习目标 理解纹理图像的概念 掌握纹理采样器的类型和作用 在GLSL 中如何使用纹理 纹理缓冲区 纹理图像 玩过游戏的同学们,都知道在游戏人物身上穿的那个叫皮肤,专业点将那个就叫做纹理图像...访问纹理缓冲区 如何使用 第一步.采样器必须在着色器中声明为uniform,切记他们的赋值必须来自应用程序中,采样器也可以作为函数的参数,但必须是类型匹配的采样器 第二步.采样器在着色器中使用之前必须分配一个纹理单元...,需要使用纹理坐标在纹理图像中指定位置,并提取相应的纹理单元的值。...,还是作为值得集合呈现为uniform变量中的一个数组,在这两个情况下,都有可能出现超出可用大小限制的数组.我们可能把这样一个值得表存储在一个纹理图像中,然后,在纹理中操作纹理坐标来访问想要访问的值。...纹理缓冲区是缓冲对象的一种特定的类型,类似于一维纹理,可以在说色器中使用一个整数值来索引,但是,它提供了较为昂贵的纹理内存的资源,因此支持较大的数据集合。

    1.3K30

    OpenGL ES学习阶段性总结

    (如果需要同步返回,可以使用glFinish) glReadPixels 从图形硬件中复制数据,通常通过总线传输到系统内存。此时,应用程序将被阻塞,直到内存传输完成。...(0.0到1.0,还有1D和3D的纹理坐标系,R,S,T轴) 位图(bitmap):一系列表示开启和关闭像素值的0和1。 像素数据 != 位图。...图像数据在内存中很少以紧密的形式存在,出于性能的考虑,每一行都该从特定的字节对齐地址开始。 OpenGL 采用4个字节的对齐方式。 存储大小 != 像素宽度 * 高度值。...) glTexImage2D (1D和3D在ES2的头文件没找到,3D可以在ES3找到)加载纹理,纹理对象需要通过glGenTexture和glDelete 来创建和销毁。...纹理坐标不是标准化的,纹理坐标实际上是对像素寻址,而不是从0到1的范围覆盖图像的。 纹理坐标(5,19)实际上是图像中从左起6个像素以及从上面起第20个像素。

    2.1K80

    CUDA 线程ID 计算方式;NVIDIA GPGPU;

    + threadId blockId :当前 block 在 grid 中的坐标(可能是1维到3维) blockSize :block 的大小,描述其中含有多少个 thread threadId :当前...thread 在 block 中的坐标(同样从1维到3维) 下面先理清几个关键点: grid 中 含有若干个 blocks,其中 blocks 的数量由 gridDim.x/y/z 来描述。...某个 thread 在此 block 中的坐标由 threadIdx.x/y/z 描述。 接着一个多维的坐标如何用一维数据表达呢?这里大家想一想两位数和三位数,就是很好的例子。...高维度坐标转一维坐标公式 id = Dx * Dy * z + Dx * y + x;坐标从0开始;维度从1开始; 搞清楚了这些,我们找几个例子开始计算: 1D grid, 1D block blockSize...;坐标从0开始;维度从1开始;1D时,yz坐标为0,yz的维度为1,代入上式,即可得公式1; 参考链接:https://www.cnblogs.com/imagineincredible/p/12455776

    1.9K10

    WebGL: 从 2D 开始

    本文作者:ivweb qcyhust 导语 在网页上绘制3D图形已经不再是什么新鲜的事情,时不时都能遇到一个炫酷的3D模型让人感叹未来的无限可能,在某些使用场景下,用3D呈现内容会更能抓住用户的注意力...本文不会涉及WebGL第三方库的使用,利用原生WebGL API从绘制基本图形三角形出发,探讨WebGL在二维画布上的绘制。...数组中存储有顶点位置和颜色信息,将它们都写入ARRAY_BUFFER中,getAttribLocation方法用来从程序对象中获取属性索引,a_Position和a_Color都是索引值。...现在尝试使用drawElements和顶点索引绘制一个多个六变形组成的图形。这个像蜂窝的图案由6个正六边形组成。...矢量和矩阵 矢量和矩阵常用来处理计算机图形,在GLSL中,用vec2,vec3,vec4来变数具有相应后缀数子的浮点元素的矢量,ivec表示矢量元素类型为整形数,同理,bvec表示元素类型为布尔值。

    5K10

    DAY18:阅读纹理内存之Layered Textures

    而存储的时候也*可能*每层存储为单独的像2D的纹理那样的布局(4个元素临近在一起),而不是3D那样的8个。例如说, 你有一堆图片的时候,例如PhotoShop之类的软件可以用来做多个图层。...这个是1D的, 和2D一个道理, 纹理内部(一张图片内部你可以理解)坐标是float的。...而层的坐标是整数的,例如: 第3层, 第2层图片,而不会像是普通的2D(相比1D的layered的)或者3D纹理(相比2D的Layered)那样,虽然大家都是2个坐标和3个坐标。...但含有Layered的字样的纹理最后一个坐标不是纹理内部的, 而是代表层次,因为我们普通的2D和3D的可以随时插值, 允许最后一个坐标是1.2, 3.4这种浮点值,而Layered的最后一个坐标是整数值...我建议你总是将Layered的理解成纹理数组,这样好理解很多。 有不明白的地方,请在本文后留言 或者在我们的技术论坛bbs.gpuworld.cn上发帖

    94150

    【他山之石】ECCV 2024|Any2Point:首个多模态3D统一大范式,只需1%的参数量即可超越现有SOTA!

    这不仅要求在训练时同时处理2D和3D模型,而且极度依赖大量的2D至3D配对数据。除了上述问题外,更重要的是,当前的方法主要关注从2D视觉到3D点云的模型适应,而不是用于其他模态的共享方法。...二.具体实现方案 整体流程如图一所示:为了编码输入的点云, 我们丢弃了预训练模型中的原始嵌入模块, 例如1D语言模型中的Tokenizer和2D视觉/音频模型中的卷积,并使用3D小型网络对点云进行编码。...在处理2D视觉和音频模态的Transformer时,我们采用PointCLIP中无需学习参数的简单投影方式将每个3D坐标虚拟地投影到M个不同的视图上,以获得2D空间中的多样性的位置坐标信息,并且我们不实际生成多视图图像...同样地,对于1D语言模态的 Transformer,我们将3D坐标虚拟地投影到M条1D线上。通过方向向量与3D点坐标的点积来确定3D点在1D线上的位置从而获得M个不同的1D位置编码。...令人注目的是,在ScanObjectNN和ModelNet40数据集上,无论使用哪种数据,Any2Point框架中的1D语言模态性能都超过了2D的视觉和音频模态。

    12310

    原 荐 WebGL 3D 电信机架实战之数据

    这个 3D 机架的 Demo 我觉得非常有代表性,首先,3D 机架用途非常广,尤其是在电信行业,就算不是机架,在比如工业方面 3D 模型以及数据绑定的应用也是非常广泛的,毕竟现在工业物联网已经是大趋势了...= new ht.graph3d.Graph3dView(dm);//创建一个 3D 场景,将数据容器作为参数传递进去,这样数据容器中的内容就可以显示在 3D 场景中了 g3d.addToDOM();...矢量在 HT for Web 中是矢量图形的简称,常见的 png 和 jpg 这类的栅格位图, 通过存储每个像素的颜色信息来描述图形,这种方式的图片在拉伸放大或缩小时会出现图形模糊,线条变粗出现锯齿等问题...而矢量图片通过点、线和多边形来描述图形,因此在无限放大和缩小图片的情况下依然能保持一致的精确度。...首先,由于数据都是存储在 dm 数据容器中的(通过 dm.add(node) 添加的),所以我们要获取数据除了可以通过 id、tag 等独立的方式,还可以通过遍历数据容器来获取多个元素: var infos

    98460

    基于3D等变图转换的条件抗体设计

    目前有的工作是将 3D 坐标作为某些不变特征进行预处理,然后再将它们提供给模型。然而,这种预处理将丢失特征和隐藏空间中的方向信息,使其在表征抗体或抗原中不同残基之间的空间接近性方面不太有效。...节点:V 中的每个节点,即 vi = (hi, Zi) 根据其氨基酸类型 ai 和一组坐标 表示为可训练的特征嵌入向量 边:对于内部边,如果以 Cα 表示的空间距离低于截止距离 c1,则 Ein 定义为连接同一组件内的每对节点的边...3D 坐标一次性放入 VC 中。...表1:序列和机构生成对比 表1 表明了MEAN 在 1D 序列和 3D 结构建模方面明显优于其他方法,这验证了 MEAN 在对配合物的潜在分布进行建模方面的有效性。...观察到仅使用重链会明显削弱性能,并且无法为亲和力优化任务得出可行的解决方案,这从经验上支持在 MEAN 中输入抗原和轻链的必要性。

    56620

    2D坐标系中绘制旋转的椭圆-坐标变换

    最后只要用一个矩阵对每个点做一次处理就可以得到想要的结果。 另外,矩阵乘法一般有硬件支持,比如3D 图形加速卡,处理3D变换中的大量矩阵运算,比普通CPU 要快上1000倍。...下面是3类基本的2D图形变换。 平移: 设某点向x方向移动 dx, y方向移动 dy ,[x,y]为变换前坐标, [X,Y]为变换后坐标。...dx dy 1 旋转: 旋转相比平移稍稍复杂: 设某点与原点连线和X轴夹角为b度,以原点为圆心,逆时针转过a度 , 原点与该点连线长度为R, [x,y]为变换前坐标, [X,Y]为变换后坐标...0 0 1 缩放 设某点坐标,在x轴方向扩大 sx倍,y轴方向扩大 sy倍,[x,y]为变换前坐标, [X,Y]为变换后坐标。...《(计算)流体力学》中的几个小程序,可在微信中点击体验: Blasius偏微分方程求解速度边界层 (理论这里) 理想流体在管道中的有势流动 (源码戳这) 涡量-流函数法求解顶驱方腔流动

    1.2K10

    numpy中mgrid()和meshgrid()函数

    一、meshgrid函数meshgrid函数通常使用在数据的矢量化上。它适用于生成网格型数据,可以接受两个一维数组生成两个二维矩阵,对应两个数组中所有的(x,y)对。示例展示:??...由上面的示例展示可以看出,meshgrid的作用是:根据传入的两个一维数组参数生成两个数组元素的列表。...二、 mgrid函数用法:返回多维结构,常见的如2D图形,3D图形。...,第1返回值为第1维数据在最终结构中的分布,第2返回值为第2维数据在最终结构中的分布,以此类推。...(分布以矩阵形式呈现) 例如np.mgrid[X , Y] 样本(i,j)的坐标为 (X[i,j] ,Y[i,j]),X代表第1维,Y代表第2维,在此例中分别为横纵坐标。

    2.9K20

    不规则图形背景排版高阶技巧 -- 酷炫的六边形网格背景图

    首先,看到这样一个图形,如果想要使用一个标签完成整个背景,最先想到的肯定是使用背景 background 实现,不过可惜的是,尽管 CSS 中的 background 非常之强大,但是没有特别好的方式让它足以批量生成重复的六边形背景...使用伪元素的优点是可以很方便地控制六边形的大小、颜色等样式。 当然,上述的代码不是一个正六边形,这是因为正六边形中,元素的高是元素的宽的 1.1547 倍。...: 所有六边形代码写在一个父容器下 这个弹性布局中,第二行的元素最左边,能够实现固定一个缩进 仔细思考一下,CSS 中有能够实现类似布局的方法么?...在 CSS 中,有一个神奇的元素能够让元素以非直线形式排布。它就是 shape-outside!...它允许你定义一个元素浮动时周围元素的形状。例如,你可以使用 shape-outside 属性来定义一个元素浮动时周围元素的形状为圆形、六边形等。

    93910

    GPU的工作原理

    较早的娱乐用的3D显卡又称“3D加速卡”,由于大部分坐标处理的工作及光影特效需要由CPU亲自处理,占用了CPU太多的运算时间,从而造成整体画面不能非常流畅地表现出来。...例如,渲染一个复杂的三维场景,需要在一秒内处理几千万个三角形顶点和光栅化几十亿的像素。早期的3D游戏,显卡只是为屏幕上显示像素提供一个缓存,所有的图形处理都是由CPU单独完成。...三角形的每个角(或顶点)都有对应的X轴、Y轴、Z轴坐标值,这些坐标值确定了它们在3D景物中的位置。同时,三角形的设置也确定了像素填充的范围。,至此,VertexShader的工作就完成了。...而且,这还仅仅只是3D图象的生成,还没有包括图形中复杂的AI运算。场景切换运算等等……无疑,这些元素还需要CPU去完成。 接下来,让我们简单的看一下CPU和GPU之间的数据是如何交互的。...多线程机制 GPU的执行速度很快,但是当运行从内存中获取纹理数据这样的指令时(由于内存访问是瓶颈,此操作比较缓慢),整个流水线便出现长时间停顿。在CPU内部,使用多级Cache来提高访问内存的速度。

    3.8K51

    激光点云语义分割深度神经网络

    将点云分割成前景和背景是处理 3D 点云的基本步骤,可以精确确定 3D 数据中对象的形状、大小和其他属性。但是,在 3D 点云中分割对象并不是简单的任务。点云数据通常是嘈杂、稀疏并且无组织的。...采样层从输入点中选择一组点,从而定义了局部区域的中心。然后,分组层通过在中心周围找到"邻近"点来构建区域集。PointNet 层使用迷你点网将局部区域模式编码为特征矢量。...PointNet 在计算效率上是有效的,但无法捕获每个点的上下文信息。RandLA-Net 在单次传递中处理大型 3D 点云,无需任何预处理步骤,如体素化、块分区或图形构造。...同样,在点云中,χ-Conv会递归地应用于"项目"或"聚合",从邻里信息中获取的代表点较少,但每个点的信息都更丰富。...DGCNN 架构可以轻松地将原样整合到现有管道中,用于基于点的图形、学习和视觉。

    1.3K20

    AAAI 2025 | 多模态大语言模型空间智能新探索:仅需单张图片或一句话,就可以精准生成3D建模代码啦!

    计算机辅助设计(CAD)已经成为许多行业设计、绘图和建模的标准方法。如今,几乎每一个制造出来的物体都是从参数化 CAD 建模开始的。...这是因为 MLLM 在推理 3D 草图角度和 3D 空间位置时受限于大语言模型的 1D 推理惯性,难以理解复杂数字背后真正的空间含义。 图 2....建模空间定位机制 我们把关键的 3D、2D 建模参数定义为大语言模型可以理解的建模语言,便于大模型理解和生成。...具体来说,设计了 3 个系列的定位 token 来代替 3D 草图平面起点坐标、3D 草图平面角度和 2D 草图曲线坐标的参数。...通过将全局空间 3D 坐标、草图平面 3D 旋转角度的特征展开到一维语言特征空间,将它们转换为两类不同的 1D 位置 tokens。此外,2D 草图被离散化并转换为特殊的 2D token。

    21710

    PyTorch入门笔记-nonzero选择函数

    nonzero 前面已经介绍了 index_select 和 mask_select 两个选择函数,这两个函数通过一定的索引规则从输入张量中筛选出满足条件的元素值,只不过 index_select 函数使用索引...False (默认值),返回一个包含输入张量中非零元素的索引的 2D 张量;如果 as_tuple 为 True,对于输入张量的每一个维度都返回一个 1D 张量,1D 张量中的元素是沿着该维度上非零元素的索引...,而 1D 张量中的每个元素值表示输入张量中的非零元素在该维度上的索引。...3 个非零元素的行索引; 对应矩阵列的 1D 张量中的 3 个元素值分别对应矩阵中 3 个非零元素的列索引; 此时矩阵中有 3 个非零元素: 1: 位于矩阵的第一行第二列,index_1_row =...比如对于一个非零元素个数为 4 的 3D 输入张量来说,输入张量的维度为 3 且一共有 4 个非零元素,因此 nonzero 函数返回的是一个长度为 3 的元组,元组中的每一个元素都是一个形状为 (4,

    6.2K31

    Direct3D 11 Tutorial 4: 3D Spaces_Direct3D 11 教程4:3D空间

    因此,我们需要一个系统来表示3D空间中的对象和一个显示它们的系统。 在现实世界中,物体存在于3D空间中。 这意味着要将对象放置在世界中的特定位置,我们需要使用坐标系并定义与位置对应的三个坐标。...在计算机图形学中,3D空间最常用于笛卡尔坐标系。 在该坐标系中,三个轴X,Y和Z彼此垂直,决定了空间中每个点的坐标。 该坐标系进一步分为左手系统和右手系统。...因此,当点没有移动时,它有一个新的坐标。 图2. 1D中的空间图示 ?...在3D中,空间通常由原点和来自原点的三个唯一轴定义:X,Y和Z.计算机图形中通常使用多个空间:对象空间,世界空间,视图空间,投影空间和屏幕空间。 图3.在对象空间中定义的立方体 ?...在3D计算机图形学中,管道中逻辑上有三种这样的变换:世界,视图和投影变换。 下一个教程将介绍单个转换操作,如转换,旋转和缩放。 世界转换 顾名思义,世界转换将顶点从对象空间转换为世界空间。

    1K30

    OpenGL入门

    在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。...标准化设备坐标 开始绘制图形之前,我们必须先给OpenGL输入一些顶点数据。OpenGL是一个3D图形库,所以我们在OpenGL中指定的所有坐标都是3D坐标(x、y和z)。...OpenGL不是简单地把所有的3D坐标变换为屏幕上的2D像素;OpenGL仅当3D坐标在3个轴(x、y和z)上都为-1.0到1.0的范围内时才处理它。...正是由于它们具有并行执行的特性,当今大多数显卡都有成千上万的小处理核心,它们在GPU上为每一个(渲染管线)阶段运行各自的小程序,从而在图形渲染管线中快速处理你的数据。...如果要使用编译的着色器,我们必须把它们链接(Link)为一个程式对象,然后在渲染对象的时候激活这个程式。已激活程式的着色器将在我们发送渲染调用的时候被使用。

    1.7K60
    领券