当前位置: 首页 > news >正文

网站搜索优化公司成都的网站

网站搜索优化公司,成都的网站,如何制作一个网站h5,WordPress主题开发者一、Shader 1、什么是Shader,为什么要使用Shder (1)shader运行在gpu上的小程序 (2)以前使用固定管线,但缺点是灵活度不够,无法满足复杂需求,为了解决固定管线的缺点,出…

一、Shader

1、什么是Shader,为什么要使用Shder

(1)shader运行在gpu上的小程序
(2)以前使用固定管线,但缺点是灵活度不够,无法满足复杂需求,为了解决固定管线的缺点,出现了可编程管线,可编程管线允许开发者自定义渲染过程,提高了灵活度。
(3)Shader是可编程管线的一部分,用于对各个阶段的自定义,shader可充分利用gpu并行计算能力,提高渲染速度,Shader可通过编程对gpu灵活控制

2、两种Shader

  • Vertex Shader–顶点Shader,用于处理3D几何图形的顶点。
  • Fragment Shader–片元Shader,用于处理像素颜色和纹理

3、Shader的输入与输出

  • 接收顶点数据,输出构造好的三角形
  • 接收片元数据,为每个像素设置不同的颜色

4、最基本的图形–三角形

  • 图形学中,三角形是最基本的图形
  • 所有复杂图形都是由三角形组成的
  • 三角形是由顶点和片元组成的

二、标准坐标系与屏幕坐标系

1、标准设备坐标系

  • 屏幕中心是(0,0)
  • x,y的范围在[-1,1]之间
  • 是shader的输出坐标系

在这里插入图片描述

2、屏幕坐标系

  • 屏幕左上角是(0,0)
  • 屏幕右下角是(width,height)
  • 屏幕坐标系的单位是像素
  • OpenGL会自动将标准设备坐标转成屏幕坐标系。
    在这里插入图片描述

3、应用在什么地方?

  • 标准设备坐标系是Shader的输出
  • 屏幕坐标系用于模型的最终显示

4、标准设备坐标系到屏幕坐标系

  • 先将标准坐标系中的顶点+1
  • 每个顶点成衣屏幕的宽/高
  • 也可以通过一个变换矩阵直接完成两步操作。

三、着色器Shader作用及语法

1、GLSL(Graphics Language Shader Language )基本语法

  • 语法类似于C语言
  • 支持向量、矩阵等数学运算
  "attribute vec4 vPosition;" +"void main() { " +"   gl_Position = vPosition;" +"}"

2、数据的传递

在这里插入图片描述
(1)一个opengl程序包含了2个shader,一个是vertex shader(用于处理顶点),一个是Fragment shader(用于处理像素)。
(2)可以将opengl shader比喻成一个芯片,每个芯片都有许多引脚,每个引脚都有唯一的id,比如上图引脚id1,引脚1关联是vertex shader 的vPosition,引脚2 关联的是fragment shader的vColor.
(3)当我们将数据传递给引脚1的时候,会自动传递给vPosition,同理fragment shader 会自动传递给vColor。
(4)如何将数据传送给引脚(不同类型数据方法不同):
以vPosition为例:第一步:如图调用opengl提供的api的glGetAttribLocation 来获取到vPosition变量对应的引脚。第二步:拿到引脚ID之后,调用glEnableVertexattribArrray()使得引脚处于开启状态,第三步调用glVertexAttribPointer(ID,…,vertexData),将准备好的vertex data当做输入参数传入api中,最终传给vPosition。这样vertextShader就可以通过vPosition得到数据。
以vColor为例:由于vColor是uniform类型的变量,它只需要2步,首先是glGetUniformLocation来获取引脚位置,第二步通过glUniform4fv()将数据传递给内部vColor。

在这里插入图片描述
vertex shader 主要有上图几种变量类型,attribute 类型、uniforms类型、Samplers类型变量(一种uniforms的特殊类型,主要用于纹理绘制),
在这里插入图片描述

3、如何创建、编译和使用Shader程序

/*** 创建shader,加载shader程序*/private fun loadShader(type: Int, shaderCode: String): Int {val shader = GLES20.glCreateShader(type)GLES20.glShaderSource(shader, shaderCode)GLES20.glCompileShader(shader)return shader}private fun linkProgram(vertexShader: Int, fragmentShader: Int) {// 创建空的opengl es 程序program = GLES20.glCreateProgram()program?.let {// 将顶点着色器加入程序GLES20.glAttachShader(it, vertexShader)// 将片元着色器加入程序GLES20.glAttachShader(it, fragmentShader)// 链接到着色器程序GLES20.glLinkProgram(it)// 将程序加入到opengl30环境中GLES20.glUseProgram(it)val info = GLES20.glGetProgramInfoLog(it)// 打印链接程序日志Log.e("wdf", "info==" + info)}}

使用

     // 创建定点着色程序val vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexShaderCode)// 创建片元着色程序val fragmentShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentShaderCode)linkProgram(vertexShader, fragmentShader)
http://www.yayakq.cn/news/340978/

相关文章:

  • 快速建站视频南京红酒网站建设
  • 企业建网站需要准备哪些资料呢前端实战项目11套
  • 遵义网站制作的网站郑州个人网站建设公司排行榜
  • 郑州企业网站优化合肥市蜀山区建设局网站
  • 网站开发部门工资会计分录网站建设时怎么附加数据库
  • 可以做微信游戏的网站有哪些哪个网站教做饭做的好
  • 怎么做门户网站设计万网在线
  • php网站建设入门教程流量点击推广平台
  • 新手做网站盈利讯美 深圳网站建设
  • 广州网站建设公司电话公司建站 网站设计
  • 上海有名的设计公司有哪些seo关键词排名优化方法
  • 德阳网站怎么做seo公司网站后台登陆
  • 建立企业网站公司网站招聘怎么做
  • 直播网站源码免费上海松江网站建设
  • vue快速建站html在线制作
  • 特产网站建设的目的赣州建设网
  • 西安市建网站可以做cps合作的棋牌网站6
  • 百度网站广告怎么做2小时学会php网站建设
  • 服装技术支持东莞网站建设网站建设中山
  • mukioplayerwp wordpress南阳关键词优化
  • 佛山市多语言营销型网站建站工程建设监理网站
  • 网站开发平台的含义精简网站模板
  • 手机网站 input欢迎进入18入口1
  • 宁波互联网公司有哪些网站排名优化公司推荐
  • 黑龙江省垦区建设协会网站手机网站淘宝客怎么做
  • 嘉兴seo网站推广费用做毕业设计资料网站好
  • 探测器 东莞网站建设网站建设 单一来源
  • 零基础怎么建设网站网站项目运营方案
  • 公司网站优化要怎么做为什么要建设就业指导网站
  • 宿城网站建设wordpress主题idown