zoukankan      html  css  js  c++  java
  • 顶点着色器 学习笔记

    顶点着色器

    shader的三种变量类型

    • uniform变量一般用来表示:变换矩阵,材质,光照参数和颜色等信息;如果在vertex和fragment两者之间声明方式完全一样,则它可以在vertex和fragment共享使用;只读常量数据;
    • attribute变量是只能在vertex shader中使用的变量;一般用attribute变量来表示一些顶点的数据,如:顶点坐标,法线,纹理坐标,顶点颜色等;
    • varying变量是vertex和fragment shader之间做数据传递用。一般vertex shader修改varying变量的值,然后fragment shader使用该varying变量的值。因此varying变量在vertex和fragment shader二者之间的声明必须是一致的。application不能使用此变量。

    矩阵变换

    模型-视图-投影(MVP)矩阵的概念:

    • 模型矩阵--将物体坐标变化成世界坐标
    • 视图矩阵--将世界坐标变换成眼睛坐标
    • 投影矩阵--将眼睛坐标变换成裁剪坐标

    在固定管线OpenGL中,模型-视图矩阵可以用glRotatef,glTranslatef,glScalef等函数创建;可编程管线已不可用这些函数,可在应用程序中处理;模板代码esTransfrom.c

    投影矩阵取眼睛坐标“裁剪”后,生成裁剪坐标。

    顶点法线

    法线是垂直于物体表面的单位长度的向量。OpenGL ES的表面是一个三角形。我们指定一个顶点法线而不是指定平面法线。二者的区别在于顶点法线的方向不一定与平面法线的方向一致。顶点向量的方向是其所在几个三角平面的平均值。取平均使物体得以平滑着色。

    每个顶点(排除掉角落和边缘的顶点)被四个多边形共享,这个顶点的法线就应该是所有共享面法线的和在归一化的结果。

    记录问题:如何判断图元坐标在视景体中,来完成裁剪操作?

    参考链接

    shader三种变量类型(uniform,attribute和varying)

    esTransform.c

     

  • 相关阅读:
    ^_^【CSS代码规范】规则顺序
    【html】三
    【代码组织】♣一
    LINUX nautilus 命令
    hadoop 统计一个目录的文件大小
    hadoop基本配置信息
    linux中用到的命令
    简单的hadoop配置(我安装的问题)
    hadoop不能用root用户启动,会报错
    linux 下的ps与jps
  • 原文地址:https://www.cnblogs.com/edisongz/p/6919380.html
Copyright © 2011-2022 走看看