OpenGL2.0 和 OpenGL3.0 的不同与共同点
OpenGL2.0 和 OpenGL3.0 的不同与共同点
在OpenGL2.0中vertex shader 中 可以不指定 version 如果不指定 version 对于iOS来说 默认认为是OpenGL2.0 OpenGL2.0中不能使用 in out inout 关键字 , in out inout 关键字 是OpenGL3.0中的关键字
但是对于要使用
在OpenGL3.0中fragment shader 中的vec4必须要指定 精度 否则就会报错
报的错误为:ERROR: 0:8: 'vec4' : declaration must include a precision qualifier for type
iOS 和 android中
shader中使用
#version 300 es 指定使用OpenGL3.0
#version 100 es 指定使用OpenGL2.0 (不指定version 默认为OpenGL2.0)
如果shader文件没有声明版本,则会认为它使用的是OpenGL ES 2.0的shader版本1.0。为了使版本号相匹配,OpenGL ES 3.0的shader版本直接从1.0跳到了3.0 。
GLSL ES 3.0删除gl_FragData和gl_FragColor内置片段输出变量。而是使用out限定符声明自己的片段输出变量。
顶点缓冲区对象VBO与顶点数组对象VAO
VBO可以将顶点数据保存在显存中,绘制时直接从显存中取数据,减少了数据传输的开销。
通过VBO我们可以将顶点属性数据保存在显存中,当绘制时问题又来了,需要调用好几个函数,过程挺复杂的。为了解决这个问题,OpenGL又引入了VAO(Vertex Array Object)来关联VBO中的数据 (VAO详解),有了VAO,任何数组形式的GL函数调用都会添加到VAO的绘制列表当中(直到解除VAO绑定),当需要绘制的时候,我们仅需要重新绑定VAO,那么之前创建的绘制列表将会重新激活,使得绘制代码更加简洁。
glDrawArrays
glDrawElements
默认精度修饰符 precision 解释
默认精度修饰符
precision precision-qualifier type;
precision可以用来确定默认精度修饰符。type可以是int或float或采样器类型,precision-qualifier可以是lowp, mediump, 或者highp。任何其他类型和修饰符都会引起错误。如果type是float类型,那么该精度(precision-qualifier)将适用于所有无精度修饰符的浮点数声明(标量,向量,矩阵)。如果type是int类型,那么该精度(precision-qualifier)将适用于所有无精度修饰符的整型数声明(标量,向量)。包括全局变量声明,函数返回值声明,函数参数声明,和本地变量声明等。没有声明精度修饰符的变量将使用和它最近的precision语句中的精度。
在顶点语言中有如下预定义的全局默认精度语句:
precision highp float;
precision highp int;
precision lowp sampler2D;
precision lowp samplerCube;
在片元语言中有如下预定义的全局默认精度语句:
precision mediump int;
precision lowp sampler2D;
precision lowp samplerCube;
片元语言没有默认的浮点数精度修饰符。因此,对于浮点数,浮点数向量和矩阵变量声明,要么声明必须包含一个精度修饰符,要不默认的精度修饰符在之前已经被声明过了。
修饰顺序
当需要使用多个修饰时,它们必须遵循严格的顺序:
(1)invariant-qualifier storage-qualifier precision-qualifier
(2)storage-qualifier parameter-qualifier precision-qualifier
参考内容:
http://www.xuebuyuan.com/1980605.html
OpenGL2.0 和 OpenGL3.0 的不同与共同点相关推荐
- OpenGL3.0教程 第十六课:阴影贴图
OpenGL3.0教程 原文链接:http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-12-opengl-extensions ...
- 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库01 —— 准备环境,搭建本地仓库,安装ambari...
一.集群软硬件环境准备: 操作系统: centos 7 x86_64.1804 Ambari版本:2.7.0 HDP版本:3.0.0 HAWQ版本:2.3.0 5台PC作为工作站: ep-bd01 ...
- 积少成多 Flash(ActionScript 3.0 Flex 3.0) 系列文章索引
[源码下载] 积少成多 Flash(ActionScript 3.0 & Flex 3.0) 系列文章索引 作者:webabcd Flash 之 ActionScript 3.0 1.积少成 ...
- 一文看懂模糊搜索1.0到3.0的算法迭代历程
参加 2019 Python开发者日,请扫码咨询 ↑↑↑ 作者 | 宋广泽 责编 | 郭芮 来源 | CSDN(ID:CSDNnews) 前一段时间在Linux上用C语言做了一个信息管理系统,初始版本 ...
- 为什么 HashMap 加载因子一定是0.75?而不是0.8,0.6?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的 ...
- 127.0.0.1和0.0.0.0地址的区别
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 1. 问题引入 之前在使用tomcat的时候,启动tomcat默认 ...
- 一个有趣的实验:用0.1f 替换 0,性能提升 7 倍!
点击关注上方"视学算法",设为"置顶或星标",第一时间送达技术干货. 本文来源:http://cenalulu.github.io/linux/about-de ...
- scala报错20/08/31 23:48:40 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, 192.168.28.94, exec
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- 架构的能力是不断打磨1.0,2.0成就3.0,4.0
架构能力的提升不在于这一年我做了多少新的功能,上线了多少服务.系统,更重要的在于是否可以就现有的这套系统规模.规则.体量扩大几倍的情况下,仍然可以快速支持业务吞吐.提升扩展及三高的能力. 更近一步来说 ...
最新文章
- Java GC收集器配置说明
- centos 7 安装 Vue
- 知识管理系统Data Solution研发日记之六 窗体设计器
- 小波的秘密2_MATLAB图像多尺度分析
- NHibernate入门hello world
- 什么是 jQuery 事件
- 操作系统/etc/hosts文件配置
- linux+qt+定时精度,Qt QTimer测试定时精度
- 一开始买的是MacBook air,后来分了专业之后发现要用的软件需要Windows系统,该怎么办?
- 2021软件测试行业问卷调查报告 20 条思考
- 经典C语言学习教程资料
- Optitrack光学动作捕捉
- 最优化进退法c语言编程,进退法、0.618法、Powell法、罚函数法的程序设计,急!!...
- 车牌识别的matlab程序(程序_讲解_模板),车牌识别的matlab程序(程序-讲解-模板)资料...
- java实现极简单的 TXT小说阅读器(第四版)
- 天然甜菊的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- java线程状态——java线程状态图
- MATLAB-三维柱状图
- 静态英雄联盟轮播图布局
- Android 开发 入门
热门文章
- Multiple commands produce “*.framework“ Command PhaseScriptExecution failed with a nonzero exit cod
- 蒙哥马利模乘算法简介
- 实现文本下方查看更多
- 练习项目(二):消融效果
- 2020大众心理健康洞察报告-简单心理——附下载链接
- 小甲鱼数据结构教学视频(百度网盘)
- 百度网盘虚假下载(文件已修改或删除)解决方法
- CPU是如何执行程序的?
- 安卓通讯录管理软件_安卓系统50个你不知道的使用窍门!每个都值得你去收藏!...
- Python 模拟乘客进站流程