OpenGL 入门到放弃1-- 初识openGL

认识OpenGL

什么是OpenGL?

Open Graphics Library
图形领域的工业标准,是一套跨编程语言、跨平台的、专业的图形编程(软件)接口。它用于二维、三维图像,是一个功能强大,调用方便的底层图形库。
与硬件无关。可以在不同的平台如Windows、Linux、Mac、Android、IOS之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。

什么是OpenGL ES

针对手机、PDA和游戏主机等嵌入式设备而设计的OpenGL API 子集。
可以使用Java/JNI开发

OpenGL的绘图原理

顶点数据->顶点着色器(图元装配->光栅化)->(纹理->)片元着色器->逐片元处理->帧缓存
顶点着色器 确认形状
片元着色器 上色

着色器(Shader)是运行在GPU上的小程序。
顶点着色器(vertex shader):
如何处理顶点、法线等数据的小程序。
片元着色器(fragment shader):
如何处理光、阴影、遮挡、环境等等对物体表面的影响,最终生成一副图像的小程序

绘制流程.png
image.png

Android 和 OpenGL ES

android设备对OpenGL ES的支持:

OpenGL ES 1.0 和 1.1 :Android 1.0和更高的版本支持这个API规范。
OpenGL ES 2.0 :Android 2.2(API 8)和更高的版本支持这个API规范。
OpenGL ES 3.0 :Android 4.3(API 18)和更高的版本支持这个API规范。
OpenGL ES 3.1 : Android 5.0(API 21)和更高的版本支持这个API规范。
目前广泛支持的是2.0 使用时需要在配置文件中加入
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>

GLSurfaceView:

继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。
管理Surface与EGL
允许自定义渲染器(render)。
让渲染器在独立的线程里运作,和UI线程分离。
支持按需渲染(on-demand)和连续渲染(continuous)。

1.setRenderer(Render render)设置渲染器
render中需要实现
onSurfaceCreated()
onSurfaceChanged()
onDrawFrame()三个方法
2.GLThread gl线程 调用渲染器

       /**
         * 配置GLSurfaceView
         */
        //1.设置EGL版本
        setEGLContextClientVersion(2);
        //2.设置渲染器
        setRenderer(new MyRenderer());
        //3.设置渲染模式
        // RENDERMODE_WHEN_DIRTY 按需渲染 当我们调动requestRender时候 请求 GLThread回调一次 onDrawFrame
        // RENDERMODE_CONTINUOUSLY 连续渲染 自动请求 GLThread调用onDrawFrame
        setRenderMode(RENDERMODE_WHEN_DIRTY);
EGL:

OpenGL是一个跨平台的操作GPU的API,但OpenGL需要本地视窗系统进行交互,这就需要一个中间控制层, EGL就是连接OpenGL ES和本地窗口系统的接口,引入EGL就是为了屏蔽不同平台上的区别。
GLSurfaceView已经提供了EGL环境的配置,不需要我们做多余的操作。

GLSL语言编写顶点着色器和片元着色器

android studio中下载 GLSL plugin 插件,方便编写时高亮显示。使用插件的话对文件的后缀有要求:
顶点着色器 .vert
片元着色器 .frag

image.png
1.常用的数据类型
float               浮点型
vec2                含两个浮点型数据的向量
vec4                含四个浮点型数据的向量(xyzw,rgba,stpq)
sampler2D           2D纹理采样器(代表一层纹理)
2.修饰符
attribute 属性变量。只能用于 顶点着色器 中。 一般用该变量来表示一些顶点数据,如:顶点坐标、纹理坐标、颜色等。
uniforms 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。
varying 易变变量。是从顶点着色器传递到片元着色器的数据变量。
3.内建函数
texture2D (采样器,坐标)  采样指定位置的纹理
4.内建变量
顶点 gl_Position vec4 顶点位置
片元 gl_FragColor vec4 颜色
5.其他
precision lowp          低精度
precision mediump       中精度
precision highp         高精度

为大家整理了一些GLSL语言教程,如果想更深入了解的可以参考下面的教程资料:
权威官方文档:https://www.opengl.org/documentation/glsl/
权威民间金典新手教程:http://blog.csdn.net/racehorse
一个具体完整的GLSL代码:http://www.ituring.com.cn/article/851
GLSL简单介绍和全部内置变量:http://www.linuxgraphics.cn/opengl/shader_overview.html
http://blog.csdn.net/kaixinbingju/article/details/14518387
http://www.cnblogs.com/mazhenyu/p/3804518.html
百度文库完整PPT:http://wenku.baidu.com/link?url=KUUhkIFpxtJOptnaFccKEWqOJw-yvnLoYGdkiwmYW0mnRpoSENQrk6TVst1_rHZJM_2sBh61H5tKX8pbNFyImM_ObOSrMDnp9LD2bqYjjCi
百度文库入门WORLD教程:http://wenku.baidu.com/link?url=wokPChPUUK9nuFTefB0WgxOK7ZGsfLMSRZ8JjXrB7mHR063L61GUkpWrNe7I58peo5dt6fdLVIfLoEvh5nNHRdedcKZl0qMZzwLSzD6Nj5e
http://wenku.baidu.com/view/be62e6bcf121dd36a32d824c.html?re=view
http://wenku.baidu.com/view/518048d528ea81c758f57800.html
GLSL语言语法基础:http://my.oschina.net/sweetdark/blog/208024#OSC_h3_12

OpenGL坐标系

image.png

以上就是openGL的一些基础知识,大家有什么不懂的可以评论告诉我,我会根据反馈进行更新。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容