glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

注:这行代码是用于清楚屏幕。GL_DEPTH_BUFFER_BIT 清除深度缓冲

glVertexPointer(3, GL_FLOAT, 0, triangleVertices);

注:此函数告诉OpenGL的情况下我们的数据是什么格式,它是有4个参数,这个功能是很简单细分:Size-3这个值表示了每个坐标有几个数字;Data Type- GL_FLOAT 意味着我们用float点值;Stride -  这个stride告诉OpenGL 在每个坐标之间忽略哪几个点;Pointer to the Data – 数据本身,正是因为它,三角形才会出现。

glEnableClientState(GL_VERTEX_ARRAY);

注:OpenGL是一个状态机。 这意味着你打开和关闭功能的要求就是启用和禁用命令。之前,我们使用过glEnable(),这影响到OpenGL的服务。 glEnableClientState ()开启顶点数据,GL_COLOR_ARRAY颜色,GL_TEXTURE_COORD_ARRAY 纹理

glTexCoordPointer(2, GL_SHORT, 0, squareTextureCoords);

注:告诉OpenGL我们的纹理坐标数组是在哪里存储并且格式是什么

glDisableClientState(GL_COLOR_ARRAY);

注:关闭颜色渲染

glDrawArrays(GL_TRIANGLES, 0, 3);

注:OpenGL绘制开始执行,Drawing Method-绘制方式: First Vertex- Vertex Count-顶点数量

glMatrixMode(GL_MODELVIEW);

注:glMatrixMode 告诉OpenGL,我们工作在顶点模式下,而不是投影

glLoadIdentity();

注:覆盖(重置)函数,它只是基本重置所有的条件(重置所有状态)

glTranslatef(GLfloat xtrans, GLfloat ytrans, GLfloat Ztrans);

注:glTranslatef(-1.5, 0.0, -6.0); X、Y、Z 3个方向上的平移

glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);

注:旋转,例:glRotatef(45.0, 0.0, 0.0, 1.0),绕Z轴旋转45度

glColor4f(GLfloat red,GLfloat green, GLfloat blue,GLfloat alpha);

注: glColor4f(0.0, 0.0, 0.8, 1.0);glColor4f()告诉OpenGL开始使用蓝色这个颜色来绘制(填充)。
red,green,blue这三个参数是颜色的浮点值,0.0表示没有强度,1.0表示全强度。
      
glColorPointer(4, GL_FLOAT, 0, squareColours);

注:Size-数组中颜色的数目,Data Format-我们在这里使用GL_FLOAT,Stride-再次,这里告诉OpenGL在两个值之间跳多少个数字。
Arry Points-这里是数据存储的地方。

glShadeModel(GL_FLAT);

注:着色模型:GL_FLAT&GL_SMOOTH。GL_SMOOTH是一个平滑着色,这就意味着当你开始填充一个矩形的时候,OpenGL将使用在我们 squareColours[] 数组里的默认颜色去定义在 squareVertices[] 数组里的每个顶点。 使用插值中每个像素的面积之间的点,顺利改变颜色之间的四点。换句话说,这将是我们出现彩色的矩形; GL_FLAT是使用物体的的最后一个顶点的颜色去填充整个图元

glGenTextures(1, &textures[0]);

注:GLuint textures[1];复制这个纹理数据到OpenGL引擎,所以我们要告诉OpenGL为它开辟内存空间

glBindTexture(GL_TEXTURE_2D, textures[0]);

注:激活绑定我们生成的纹理:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureData);

注:发送纹理数据(textureData 的指针)到OpenGL

  • target – 基本上,通常是 GL_TEXTURE_2D
  • level – 规定纹理的详细程度。0表示允许图片的全部细节。高数字表示n级别mipmap图片细节。(这边不懂,请知道的朋友告诉我下。)
  • internal_format – 这个 internal format 和 format 必须是相同的。这两个都是 GL_RGBA .
width - width of the image
  • height - height of the image
border – 必须始终设置为0 , OpenGL ES 不支持纹理边界.
  • format – 必须和 internal_format相同。
  • type – 每个像素的类型。想起来没,每个像素为四个字节。因此每个像素占用1个无符号整型(4字节)
  • pixels – 实际上的图片数据指针。

free(textureData);

注:释放

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glEnable(GL_TEXTURE_2D);

注:告诉OpenGL,在放大的(近距离 - GL_TEXTURE_MAG_FILTER) 及缩小的(远距离 - GL_TEXTURE_MIN_FILTER). 时候如何处理,

glPushMatrix(); glPopMatrix();

注:告诉OpenGL 将我们的矩阵变换放到堆栈中,2个函数配合使用

glEnable(GL_BLEND); glDisable()

注:开启 GL_BLEND 混合色,半透明。GL_DEPTH_TEST 深度测试。GL_CULL_FACE 面剔除

glBlendFunc(GL_ONE, GL_ONE);

注: glEnable打开混合。光混合不够的,默认状态下,不会做任何事情。glBlendFunc 告诉OpenGL混合是如何工作的。

转载于:https://www.cnblogs.com/yuxiuyi/p/10273306.html

iOS中 openGL常用函数记录(部分)相关推荐

  1. 全景视频播放器中OpenGL的相关记录

    全景视频播放器中OpenGL的相关记录 一.OpenGL顶点数组 二.坐标系与投影 三.坐标系相关函数 四.纹理坐标 五.纹理过滤 六.深度缓冲区 七.OpenGL的glut库 OpenGL函数功能g ...

  2. Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介、具体案例、使用方法之详细攻略

    Python之pandas:pandas中数据处理常用函数(与空值相关/去重和替代)简介.具体案例.使用方法之详细攻略 目录 pandas中数据处理常用函数(isnull/dropna/fillna/ ...

  3. c语言中math的库函数,C语言中math.h库中的常用函数

    C语言中math.h库中的常用函数 int abs(int i) 返回整型参数i的绝对值 double cabs(struct complex znum) 返回复数znum的绝对值 double fa ...

  4. php spl函数,PHP SPL标准库中的常用函数介绍

    这篇文章主要介绍了PHP SPL标准库中的常用函数介绍,本文着重讲解了spl_autoload_extensions().spl_autoload_register().spl_autoload()三 ...

  5. json pandas 内存溢出_pandas中的常用函数

    Pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的.Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具. 近年随着大数据时代的到来,产生 ...

  6. 开发中Docker常用容器记录

    开发中Docker常用容器记录 概览 分享工作学习中常用的Docker容器使用: 比如常用数据库的使用 消息队列类的使用 用于服务发现的容器使用 还有其他工作学习中使用到的 持续更新:https:// ...

  7. [C++基础]队列queue中的常用函数

    [C++基础]队列queue中的常用函数 本博客转载自:https://www.cnblogs.com/xuning/p/3321733.html 在C++中只要#include即可使用队列类,其中在 ...

  8. iOS中使用c函数快速获取一个目录所占的空间大小

    在编写iOS应用时,我们都会大量把服务器的接口调用数据或者图片数据进行缓存,为了更好的使用体验,有时候我们也会把各种缓存的数据所占的空间大小告诉用户,提供给用户参考,并让用户可以手动清除缓存数据,就像 ...

  9. Makefile中的常用函数——wildcard,patsubst,filter

    Makefile中的常用函数 wildcard 提取文件用 #拿到DIR指定目录的所有文件 SRC = $(wildcard $(DIR)) #拿到当前文件夹下的 *.cpp 文件 src=$(wil ...

最新文章

  1. 对于大数据大流量情况下微软架构的水平扩展的遐想(瞎想)
  2. html 超出部分被遮挡,div被iframe遮住的几种情况及解决方法
  3. 计算机cpu 和 主板型号,CPU和主板怎么搭配?intel七代/八代/九代处理器和主板搭配对照表...
  4. win10开机慢怎么解决_细说Win10启动慢怎么办
  5. 0040 Java学习笔记-多线程-线程run()方法中的异常
  6. 构建在线教育弹性高可用视频处理架构实战
  7. java中的变量是原子的_Java原子变量
  8. python语言程序设计西安电子科技大学答案-中国科学技术大学2019自命题科目覆盖范围及参考书目...
  9. SPSS使用命令语法之复制与粘贴讲解
  10. linux nginx环境下,网站不显示字体和图形.(图形变成了方框),解决nginx下加载eot|otf|ttf|woff|svg等404 错误问题
  11. Java开发手册!java项目描述模板,挥泪整理面经
  12. Allure自动化测试报告之修改allure测试报告logo与标题,让报告具有公司的气息
  13. iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
  14. JavaScript之移动端网页特效与本地存储(57th)
  15. 什么是电口模块?它和光模块有什么区别?
  16. 11矩阵空间、秩1矩阵和小世界图
  17. java自动生成物流单号
  18. 厦门宝讯网捷:拼多多一件代发怎么做?
  19. 解决8K超高清视频内容匮乏难题,博冠助力百城千屏活动
  20. MySQL占用CPU过高

热门文章

  1. mysql 删除not null_从MySQL的列中删除NOT NULL限制?
  2. java in out 参数_总是避免Java中的in-out参数?
  3. navicat怎么查看数据库的url_连接数据库url怎么写
  4. exe解包和重新打包_Jira 批量提交问题 + 生成可执行文件exe
  5. 扫地机器人单扫和双扫_小米扫拖机器人体验:再见了,拖把君
  6. python中end 1 意思_python中“end=”是什么意思?_后端开发
  7. harmonyos sdk,HarmonyOS SDK对应的API版本跃迁引发的历史工程适配问题解决方案
  8. (斜率,点和线段)zzuli1196数星星(二)
  9. vue读取终端硬件信息_双通道RFID模块助力电力数据采集终端(不必多说,直接测试对比)...
  10. 强制关机对电脑的影响_笔记本电脑需要每天关机吗?长期开机对电脑有影响么?...