关闭

OpenGL ES 宏观处理流程-适合研究一段之后再看

1184人阅读 评论(0) 收藏 举报
分类:

OpenGL ES 宏观处理流程-适合研究一段之后再看

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)

本文遵循“署名-非商业用途-保持一致”创作公用协议

转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS、Android、Html5、Arduino、pcDuino否则,出自本博客的文章拒绝转载或再转载,谢谢合作。



1、构建顶点缓存:包括几何顶点坐标、纹理坐标、法线坐标

    a、传给OpenGL ES API的是一组顶点属性,这组属性中包括以上三种数据;

    b、3dmax导出的obj文件中的法线坐标,并不像其它文章所说的,是面法线,需要转换成顶点法线,直接使用即可;(也或许是blender导出的是面法线吧,至少这块纠结过很久了)

    c、顶点属性中的三类数据,其中纹理坐标可能是uvw也可能是uv,所以使用时也有不同;

    d、三类数据的组织结构顺序也要和后续使用中对应;

2、以下代码是顶点属性的使用

    a、先将vbo顶点缓存绑定到当前处理缓存中,顶点缓存是在GPU中开辟的,绑定也就是把这个GPU中的缓存位置告诉一下当前在处理的渲染管线而已;

    b、告诉渲染管线,这些数据中都包括哪些类型数据,因为只有几何点坐标是必选的,所以得告诉它具体的开始字节数和一个顶点跨的字节数;

    c、一个几何体的所有顶点,在上面绑定完后,下面就可以接着使用这些顶点的索引来构建三角形了,告诉渲染管线组成几何体的所有三角形使用的顶点缓存中的索引;

3、万事俱备,只欠东风,这时侯可以告诉GPU,抓紧把上面的几何体给俺画出来,放到桢缓存中;

4、以上的步骤是可以重复的,最终不同的几何体是画到同一个桢缓存中,还是多个,俺就不知道了,因为有最后一句代码引出的下面的描述:

5、通过上下文的功能调用,把所有桢缓存中的内容画到界面上,这部分属于EGL部分,不属于GLES部分,具体实现也不同,俺暂时还不了解。还没完,这些需要理解和领悟,重要的麻烦事儿,还在于obj的解析,多个obj的解析,一个obj中多个几何体的解析,解析出来如何存储,后续研究完,再整理出来。


有时,脑袋里面想的东西,并不一定真的知道或了解,当说出来时,可能要清晰些,但真正要写出来,才表示逻辑已经挼顺,这确实是个好的解决问题的方式。

    // 绑定顶点缓存,并指定顶点坐标、法线坐标和纹理坐标三者组成的顶点的字节数,以及每个顶点在该缓存起点开始的指针偏移量
    glBindBuffer(GL_ARRAY_BUFFER, [_vboArray[0] vertexBuffer]);
    
    // 指示读取各段数据的位置
    glVertexAttribPointer(_positionSlot, 3, GL_FLOAT, GL_FALSE, stride, 0);
    glVertexAttribPointer(_textureCoordSlot, 3, GL_FLOAT, GL_FALSE, stride, texCoordOffset);
    glVertexAttribPointer(_normalSlot, 3, GL_FLOAT, GL_FALSE, stride, normalOffset);
    
    // Draw the triangles.
    //
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, [_vboArray[0] triangleIndexBuffer]);
    
    // 指示GPU使用以上的三维信息绘制出二维图形到帧缓存中
    glDrawElements(GL_TRIANGLES, [_vboArray[0] triangleIndexCount], GL_UNSIGNED_SHORT, 0);
    
    // 将帧缓存中内容绘制到视图中
    [_context presentRenderbuffer:GL_RENDERBUFFER];




参考资料:

罗朝辉的 OpenGL ES 2.0 iOS教程 :http://blog.csdn.net/column/details/opengl-es2-ios.html




0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

GPU 加速下的图像处理 Opengl es shader

Instagram,Snapchat,Photoshop。 所有这些应用都是用来做图像处理的。图像处理可以简单到把一张照片转换为灰度图,也可以复杂到是分析一个视频,并在人群中找到某个特定的人。尽管这...
  • xmutbbs2
  • xmutbbs2
  • 2015-04-08 14:45
  • 1989

[OpenGL]从零开始写一个Android平台下的全景视频播放器——3.1 全景视频是如何实现的

Github项目地址为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过更新会慢一些回到目录恭喜Martin同学获得由CSDN颁发的“更新慢慢慢”荣誉称号全景视频有很多种类,例如Spher...
  • Martin20150405
  • Martin20150405
  • 2016-12-17 21:13
  • 3119

利用OpenGL ES进行Android手游录屏研究

前面在Android5.0录屏方案中研究过关于手机录屏直播直播的问题,只是使用系统自带的API需要21以上,大部分手游引擎底层封装一般都是opengl es,这篇博客继续研究这个问题,实现使用open...
  • cauchyweierstrass
  • cauchyweierstrass
  • 2016-11-18 12:16
  • 2403

OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究

OpenGL ES 在 iOS 平台纹理贴图倒置的问题研究
  • sleks
  • sleks
  • 2013-12-21 10:30
  • 2297

Android OpenGL ES 2.0学习研究 (一)

Android OpenGL ES 2.0学习研究 (一) 基于对 Google 的 Gallery 代码的研究和修改,对 OpenGL ES 2.0 在 Android 中的使用进行总结; ...
  • sinat_14899485
  • sinat_14899485
  • 2017-01-09 10:52
  • 172

iOS OpenGL ES 研究一:渲染、缓存数据、上下文、几何知识

前言:如题、本文介绍以下四个方面:1.渲染:3D->2D 降维 2.缓存数据 3.上下文 4.几何知识 一、渲染的概念?3D->2D屏幕是2 维的、但我们在屏幕中看到的东西是3 维的。由3 维降到2 ...
  • Xoxo_x
  • Xoxo_x
  • 2017-05-13 16:09
  • 620

利用opengl es画立方体的简单流程

最近在学习opengl es,其中弄了一个小Demo,画了个天空盒,并在场景里加了个立方体,主要介绍在android中使用opengl es来绘制一个立方体,在android中的流程以及着色器中绘制物...
  • u011371324
  • u011371324
  • 2017-03-12 15:41
  • 749

Mali GPU OpenGL ES 应用性能优化--测试+定位+优化流程

1. 使用DS-5 Streamline定位瓶颈     DS-5 Streamline要求GPU驱动启用性能测试,在Mali GPU驱动中激活性能测试对性能影响微不足道。 1.1 DS-5 Str...
  • MyArrow
  • MyArrow
  • 2014-01-02 10:52
  • 8012

Cocos2d Android移植手记(一)——Opengl ES创建流程

前一阵子,一直在忙公司的iPhone的项目HourglassTimer,顺便了解下iPhone 平台上的2D引擎cocos2d-iphone库的使用。由于一直没有发现android上的基于Opengl...
  • zaq123q
  • zaq123q
  • 2012-04-16 21:30
  • 489

从kxmovie代码看iOS上OpenGL ES的显示流程

http://www.jianshu.com/p/6e00cddf3d40 一句话概述:视频的帧数据,传递给OpenGL,处理后输出给FBO,然后取得FBO里的color render ...
  • jeffasd
  • jeffasd
  • 2016-08-04 21:12
  • 960
    个人资料
    • 访问:1334723次
    • 积分:17664
    • 等级:
    • 排名:第633名
    • 原创:338篇
    • 转载:285篇
    • 译文:131篇
    • 评论:136条
    金刚经
    博客专栏