美文网首页
OpenGL ES -顶点着色器

OpenGL ES -顶点着色器

作者: 小菜一碟321 | 来源:发表于2017-02-04 13:52 被阅读107次

顶点着色器输入包括:

  • 着色器程序 - 描述顶点上执行操作的顶点着色器源代码和可执行文件
  • 顶点着色器输入 - 顶点数组数据
  • 统一变量 - 着色器使用的不变的数据
  • 采样器 - 代表顶点着色器使用纹理的特殊同一变量类型

图元是能够被OpenGL ES 绘制的几何物体,如三角形、线条或者精灵。在图元组合过程中,对每个图元必须判断是否位于投影 截体内,如果图元不完全在平截体内部,将被视图平截体剪贴,如果完全在平截体外,将被 丢弃,然后顶点位置被转变为屏幕坐标,剔除操作也能够舍弃一些图元,依据图元位于正面 还是背面,剪切和剔除后,图元进入光栅化阶段。 光栅化是转化图元为二维片段的过程,被片段着色器执行,二维的片段像素能 够被绘制在屏幕上。

Paste_Image.png

图元

可以绘制图元的包括下面的函数:

  • glDrawArrays
  • glDrawElements
  • glDrawRangeElements
  • glDrawArraysInstanced
  • glDrawElementsInstanced

其中这些函数可以绘制三角形、直线和点精灵。

三角形

  • GL_TRIANGLES:绘制一系列单独的三角形;
  • GL_TRIANGLE_STRIP:绘制一系列相互连接的三角形;
  • GL_TRIANGLE_FAN:绘制一系列相连的三角形;

直线

  • GL_LINES:绘制一系列不相连的线段;
  • GL_LINE_STRIP:绘制一系列相连的线段;
  • GL_LINE_LOOP:同上,类似;

点精灵

支持的图元是GL_POINTS,点精灵对指定的每个顶点绘制,点精灵通常用于将粒子效果当作点而非正方形绘制,从而实现高效渲染。点精灵是指定位置和半径的屏幕对齐的正方形,位置描述正方形的中心,半径用于计算描述点精灵的正方形的4个坐标,。

区别

如果你有一个由一系列顺序元素索引描述的图元,且几何形状的顶点不共享,则glDrawArrays很好用,但是,游戏或者其他3D应用程序使用的典型对象由多个三角形网格组成,其中的元素索引可能不一定按照顺序,顶点通畅在网格的三角形之间共享。

比如画一个由2个3角形组成的正方形,左上角坐标是l,t,右下角坐标是r,b
使用glDrawArrays绘制时,画2个三角形,需要这样传:
(l,t),(r,t),(l,b)
(r,t),(r,b),(l,b)
而用glDrawElements画的话可以这样
float coord[4][2]={{l,t},{r,t},{r,b},{l,b}};
绘制时:
0,1,3
1,2,3

glDrawArrays传输或指定的数据是最终的真实数据,在绘制时效能更好
而glDrawElements指定的是真实数据的调用索引,在内存/显存占用上更节省

相关文章

  • OpenGL ES 学习笔记(一)

    一. 着色器 顶点着色器的输出在OpenGL ES 2.0中称作varying,但是在OpenGL ES 3.0改...

  • OpenGLES 入门(一)着色器简介

    与OpenGL ES1.x渲染管线相比,OpenGL ES 2.0渲染管线中“顶点着色器”取代了OpenGL ES...

  • OpenGL ES 渲染流程

    OpenGL ES 渲染流程 1、总体流程 2、流程细节 2.1、顶点着色器 顶点着色器的输入着色器程序:描述顶点...

  • OpenGL ES 着色器语言GLSL

    在OpenGL ES中着色器分为顶点着色器和片元着色器。顶点着色器是针对每个顶点执行一次,用于确定顶点的位置。片元...

  • OpenGL ES--基础

    OpenGL ES 图形管线 image.png 顶点着色器的输入: 1.着色器程序--描述顶点上执行操作的顶点着...

  • 顶点着色器&片元着色器

    在OpenGL/OpenGL ES中, 我们开发者一般编写的是顶点着色器和片元着色器。下面是图形渲染管线: 顶点着...

  • OpenGL ES 图形管线解析

    OpenGL ES 3.0实现了具有可编程着色功能的图形管线,如下图所示顶点着色器和片元着色器是OpenGL ES...

  • OpenGL ES 图形管线解析

    OpenGL ES 3.0实现了具有可编程着色功能的图形管线,如下图所示顶点着色器和片元着色器是OpenGL ES...

  • 十一、OpenGL ES 颜色纹理混合金字塔

    1. OpenGL ES实现 1.1 颜色填充 1.1.1 着色器 顶点着色器 片元着色器 1.1.2 绘制过程 ...

  • OpenGL ES学习

    在 OpenGL ES 中你必须创建两种着色器:顶点着色器 (vertex shaders) 和片段着色器 (fr...

网友评论

      本文标题:OpenGL ES -顶点着色器

      本文链接:https://www.haomeiwen.com/subject/hdijittx.html