美文网首页工作生活
GLSL 精度限定符

GLSL 精度限定符

作者: BigBowen | 来源:发表于2019-07-02 15:12 被阅读0次

精度限定符有三个:

  • lowp
  • mediump
  • highp
    从名称上可以知道它是用来限定数据类型精度的,比如:int, float

限定float的取值范围

  • highp (-2^62, 2^62);
  • mediump (-2^14, 2^14);
  • lowp (-2,2);

限定int的取值范围

  • highp (-2^16, 2^16);
  • mediump (-2^10, 2^10);
  • lowp (-2^8, 2^8);
    注意:􏱫􏱬􏲀􏲘􏱽􏵃􏵄􏲋􏱳􏱴􏴨􏳑􏵀􏵁􏱬􏱫􏱬􏲀􏲘􏱽􏵃􏵄􏲋􏱳􏱴􏴨􏳑􏵀􏵁􏱬字符常量和布尔类型没有精度限定符.

用法

即可单独限定某一数据类型,也可􏵝􏳸放在Vertex和Fragment shader 􏲗􏰵􏳧􏵟􏲶源码开始处统一限定数据类型.

单独限定某一数据类型
highp vec4 position;
varying lowp vec4 color;
mediump float specularExp;
统一限定
precision precision-qualifier type;

precision-qualifier􏲆􏲇􏲈可以是lowp, mediump, 或者􏲌􏲍highp.􏱵􏱶􏴲􏵊􏱝􏲋􏱽 􏵀􏵁􏱬􏲻􏱧􏵋􏵌􏵍􏵎􏲆􏲇􏰠􏱮􏴾􏴡􏵈􏵉􏴨􏳑􏵀􏵁

  • type是float时,没有指明精度限定符的并且是float修饰的默认限定符是precision-qualifier(lowp, mediump, 或者􏲌􏲍highp),例如float修饰的标量,向量及矩阵.
  • type是int时,没有指明精度限定符的并且是int修饰的默认限定符是precision-qualifier(lowp, mediump, 或者􏲌􏲍highp),例如int修饰的标量和向量.(不包括矩阵,矩阵是用float的)

默认的限定符

  • 􏳸 在Vertex Shader中,如果没有统一设定的精度限定符, 则􏳋􏴐float和int默认的精度限定符是highp;
precision highp float;
precision highp int;
precision lowp sampler2D;
precision lowp samplerCube;
  • 在Fragment Shader中,如果没有统一设定的精度限定符, 则int默认的精度限定符是mediump,注意float没有默认的精度限定符,需要我们自己设定.
precision mediump int;
precision lowp sampler2D;
precision lowp samplerCube;

相关文章

网友评论

    本文标题:GLSL 精度限定符

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