首页 > 其他分享 >openGL (point sprite) 点精灵

openGL (point sprite) 点精灵

时间:2023-09-17 10:11:41浏览次数:57  
标签:sprite openGL point 精灵 纹理 2D 坐标 OpenGL 四边形

point sprite这个词一般都是指一个贴了纹理图片的点。OpenGL在描述每个点的时候只用了一个vertex,这就使得点精灵无法像其他图元那样,去指定纹理坐标参与后面的插值过程。为了解决这个限制,OpenGL会帮你去生成 点精力的纹理坐标,你有了这些纹理坐标,你就可以干任何事情了。有了点精灵后,你就可以通过一个3D的点把一个2D纹理图片绘制到屏幕的任何位置。

使用点精灵最常见的用法是制作粒子系统。可以用点精灵的方式去描述大量粒子在屏幕上的运动,这样就可以产生很多视觉效果。然而,当大量的小的点通过2D图片的方式绘制出来并叠加在一起的时候,会产生大量的流动的 如丝般顺滑的效果。比如,图9.25就展示了苹果系统上的一个屏幕保护程序的粒子效果。

没有点精灵的话,要实现这个效果的话,就需要绘制大量的贴了纹理的四边形了。为了实现这些效果,你可能要么做大量的旋转,让这些四边形能够面向摄像机,要么在2D正交投影模式下去完成粒子系统。有点精灵的话, 你就可以通过一个3D的点绘制出一个非常完美的与屏幕对齐的2D四边形。点精灵相比传统的四边形,它的数据量只有原来的四分之一,并且不需要为了让3D四边形面向摄像机而进行矩阵操作,这使得点精灵成为了OpenGL一个 非常牛逼和高效的特性。

点精灵使用起来是非常容易的。在应用程序层面,你唯一需要做的就是绑定一个2D纹理,然后在fragment shader里通过gl_PointCoord内置变量从上面采集纹理数据,这个二维向量是基于点进行纹理坐标插值的。 清单9.30展示了渲染点精灵的样本fragment shader。

version 450 core

out vec4 vFragColor;
in vec4 vStarColor;
layout (binding = 0) uniform sampler2D starImage;
void main(void)
{
vFragColor = texture(starImage, gl_PointCoord) * vStarColor;
}

同样的,对于点精灵来说,你不需要通过属性组给GPU发送纹理坐标数据,因为OpenGL会帮你自动算出来并写入gl_PointCoord里。由于一个点仅仅是一个vertex,你无法自己通过任何其他的方法去插值出这个面上的任何数据。 当然,也没有人会阻止你去给GPU传纹理坐标数据或者迫使你倒腾自己的插值算法。

我们核心关注和讨论的领域是引擎的底层技术以及商业化方面的信息,可能并不适合初级入门的同学。官方相关信息主要包括了对市面上的引擎的各种视角的分析以及宏观方面的技术讨论,相关领域感兴趣的同学可以关注东汉书院以及图形之心公众号。

只言片语,无法描绘出整套图形学领域的方方面面,只有成体系的知识结构,才能够充分理解和掌握一门科学,这是艺术。我们已经为你准备好各式各样的内容了,东汉书院,等你来玩。

标签:sprite,openGL,point,精灵,纹理,2D,坐标,OpenGL,四边形
From: https://www.cnblogs.com/ultramanX/p/17707880.html

相关文章

  • PowerPoint傻瓜书4校对
    4校对演示文稿本章主要内容拼写检查语词库确的大写和标点符号用法自动更正功能4.1边输入边检查拼写错误PowerPoint的拼写检查程序你犯错误的时候就大胆地指出你的错误,用波浪形红线下划它不认识的单词,如图第二个要点中的deid一词。当您看到提示性的波浪红线时,您有几......
  • PowerPoint傻瓜书3大纲视图
    3在大纲视图中工作本章内容理解大纲重实质而非形式提升、降级大纲视图中添加幻灯片折叠和展开大纲许多演示文稿都是由一张又一张幻灯片组成的列表。你可能会在这里或那里看到一个图表,偶尔也会看到一些剪贴画,以达到喜剧效果,但演示文稿的面包和黄油就是项目符号列表。这听......
  • Hack The Box 闭坑指南---Starting Point---Meow(第0层)
    0x00实验环境靶场:windows笔记本、kali虚拟机 0x01实验前提(1)注册HackTheBox(自行注册)注册htb:https://www.hackthebox.com/ (2)连接htb靶场环境:登录htb: https://app.hackthebox.com/machines访问machines——>点击CONNECTTOHTB——>StartingPoint 点击OpenV......
  • PowerPoint傻瓜书2编辑幻灯片
    2编辑幻灯片本章主要内容对象和文本编辑撤销错误和删除幻灯片查找和替换文本重新排列幻灯片2.1对象没有对象,PowerPoint幻灯片就什么都不是。对象是文本、图片和图表等项目,它们赋予了幻灯片无形和空洞的意义和内容。不过,在使用对象时,有时少即是多。不要在幻灯片上放置......
  • Go 中普通指针、unsafe.Pointer 与 uintptr 之间的关系和指针运算
    C语言指针运算指针运算就是对指针类型的变量做常规数学运算,例如加减操作,实现地址的偏移。指针运算在C语言中是原生支持的,可以直接在指针变量上做加减,例如:#include<stdio.h>constintMAX=3;intmain(){intvar[]={10,100,200};inti,*ptr;/*......
  • dockerfile entrypoint cmd 同时使用
    CMD与ENTRYPOINT都是用于指定启动容器执行的命令,区别在于:当dockerrun命令中有参数时,守护进程会忽略CMD命令。使用ENTRYPOINT指令不会忽略,并且会接收dockerrun参数附加到命令行中。dockerrun的命令,相当于新加的CMD,会覆盖原有的CMDnginx的镜像就是这样。dockerrun......
  • OpenGL入门——着色器
    前面几节简单使用了一下着色器 现在详细解释一下着色器和着色器语言(GLSL) 1.着色器着色器是运行在GPU上的小程序,它们之间不能互相通信,唯一的沟通只有输入和输出。 2.GLSL着色器的开头是声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是mai......
  • OpenGL入门——使用EBO绘制三角形
    上一节OpenGL入门——第一个三角形(1)-一只小瓶子-博客园(cnblogs.com)介绍了opengl怎么使用VAO和VBO绘制一个三角形这一节介绍一下使用EBO绘制 元素缓冲对象(ElementBufferObject,EBO),也叫索引缓冲对象(IndexBufferObject,IBO)。为什么会需要用到元素缓冲对象呢?因为上......
  • spring boot WebSocket @ServerEndpoint注解标识的class无法获取spring容器中的bean
    在@ServerEndpoint类中直接使用@Autowired注解注入Spring管理的bean可能不会成功,因为@ServerEndpoint并不受Spring容器的管理。通过创建一个静态的成员遍历属性和一个带有@Autowired注解的setter方法,你可以在类加载时将bean注入到静态属性中。但是,请注意这样做......
  • 大华智慧园区综合管理平台devicePoint_addImgIco任意文件上传漏洞
    漏洞简介大华智慧园区综合管理平台是一款综合管理平台,具备园区运营、资源调配和智能服务等功能。平台意在协助优化园区资源分配,满足多元化的管理需求,同时通过提供智能服务,增强使用体验。大华智慧园区设备开放了文件上传功能,但未在上传的文件类型、大小、格式、路径等方面进行严格......