美文网首页
iOS端OpenGL ES 的基本使用

iOS端OpenGL ES 的基本使用

作者: 前进的小猫 | 来源:发表于2017-05-19 21:03 被阅读0次

OpenGL ES是针对嵌入式系统的OpenGL标准,iPhone端支持的是OpenGL ES 2.0. 并且iOS5之后引入了GLkit框架,方便我们使用OpenGL进行图形绘制.

使用3D数据生成一个2D图像的过程叫做渲染.OpenGL ES 为两个内存区域间的数据交换定义了缓存的概念.缓存是指图形处理器能够控制和管理的连续RAM.

几乎所有程序提供给GPU的数据都应该放入缓存中. 为缓存提供数据有以下7个步骤:

1. 生成 ---请求OpenGL ES 为图形处理器控制的缓存生成一个独一无二的标识符.----  glGenbuffers()

2.绑定  告诉OpenGL ES 为接下来的运算使用一个缓存  -----glBindBuffer()

3.缓存数据   ----让OpenGLES 为当前绑定的缓存分配并初始化足够的连续内存.  ----glBufferData()

4. 启用  或者 禁止 --告诉OpenGL ES 在接下的渲染中是否使用缓存中的数据  ------glEnableVertexAttribArray()

5. 设置指针  告诉OpenGLES 在缓存中的数据的类型和所有需要访问的数据的内存偏移值 --- glVertexAttribPointer()

6. 绘图 -- 告诉OpenGL ES 使用当前绑定并启用的缓存中的数据渲染整个场景或者某个场景的一部分. ---glDrawArrays()

7.删除  -- 告诉OpenGL ES 删除以前生成的缓存并释放相关的资源.-----glDeleteBuffers()

使用GLKBaseEffect 能减少需要编写的代码,可以不用我们自己写"Shading Language"去编写GPU程序.

1.glGenBuffers(1, &buffer)函数,第一个参数用于指定要生成的缓存标识符的数量,第二个参数是一个指针,指向生成的标识符的内存保存位置.

2.glBindBuffer(GL_ARRAY_BUFFER, buffer);函数绑定用于指定标识符的缓存到当前缓存.第一个参数是一个常量,用于指定要绑定哪一种类型的缓存.

3.glBufferData(GL_ARRAY_BUFFER, sizeof(squareVertexData), squareVertexData, GL_STATIC_DRAW);
第一个参数用于指定要更新当前上下文中所绑定的是哪一个缓存.第二个参数指定要复制进这个缓存的字节的数量.第三个参数是要复制的字节的地址.最后第四个参数提示了缓存在未来的运算中可能将会被怎样使用.

4.glEnableVertexAttribArray(GLKVertexAttribPosition),用来启动顶点缓存渲染操作.

5.glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat) * 3, 0),这个函数告诉OpenGL ES顶点数据在哪里,以及怎么解释为每一个顶点保存的数据.第一个参数指示当前绑定的缓存包含每个顶点的位置信息.第二个参数指示每个位置有3个部分.第三个参数告诉OpenGL ES每个部分都保存为一个浮点类型的值.第四个参数告诉OpenGL ES 小数点固定数据是否可以被改变.

6.通过glDrawArrays()来绘图.glDrawArrays(GL_LINE_LOOP, 0, 3);第一个参数告诉GPU怎么处理在绑定的顶点缓存内的顶点数据.第二个参数和第三个参数分别指定缓存内的需要渲染的第一个顶点位置和需要渲染的顶点的数量.

7.删除不需要的顶点缓存和上下文

glDeleteBuffers(1,&vertexBufferID);

有一些使用的例子在这里:https://github.com/Wutaotao692732757/LearnOpenGLDemo

相关文章

  • iOS端OpenGL ES 的基本使用

    OpenGL ES是针对嵌入式系统的OpenGL标准,iPhone端支持的是OpenGL ES 2.0. 并且iO...

  • OpenGl 01

    在iOS上使用OpenGL,基本上会涉及到 OpenGL ES,GPUImage, GLKit 这三块的知识,其中...

  • 核心动画(一)

    核心动画知识导入 CoreAnimation框架是基于OpenGL ES 手机端/OpenGL PC端(iOS13...

  • OpenGL ES for iOS - 6

    OpenGL ES 设计指南 现在您已经掌握了在 iOS 应用程序中使用 OpenGL ES 的基础知识,请使用本...

  • Android OpenGL 基本环境,绘制简易图形

    学习Android 平台 OpenGL ES API,了解 OpenGL 开发的基本流程,使用 OpenGL 绘制...

  • OpenGL之纹理及应用案例

    纹理介绍 OpenGL使用的图片数据(纹理)都是tga格式的,而iOS/OpenGL ES使用PNG/JPEG格式...

  • OpenGL_ES GLKit

    1. 简介 基于OpenGL / OpenGL ES进行简化设计的开发框架,使得iOS上使用OpenGL变得容易。...

  • OpenGL ES for iOS - 6

    OpenGL ES设计指南 现在,您已经掌握了在iOS应用程序中使用OpenGL ES的基础知识,请使用本章中的信...

  • OpenGL ES--入门热身

    本身大多内容都来自 《OpenGL ES应用开发实践指南 iOS卷》。使用OpenGL ES大多时候是要用到缓存....

  • GLKit框架和常用API解析

    GLKit是苹果iOS 5引入的一个为简化OpenGL ES的使用的框架,它为OpenGL ES的使用提供了相关的...

网友评论

      本文标题:iOS端OpenGL ES 的基本使用

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