几个有用的工具,用来抓取图形渲染帧,在分析其它项目以及排查渲染方面的 bug 时非常有用。 渲染帧抓取工具 OpenGLES 以及 shader 开发调试工具。
OpenGL / OpenGL ES Reference Compiler
OpenGL ES 2.0 (ESSL #version 100)
OpenGL ES 3.0 (ESSL #version 300 es)
OpenGL 2.0 (GLSL #version 110)
OpenGL 2.1 (GLSL #version 120)
OpenGL 3.0 (GLSL #version 130)
OpenGL 3.1 (GLSL #version 140)
OpenGL 3.2 (GLSL #version 150)
OpenGL 3.3 (GLSL #version 330)
https://www.cnblogs.com/vertexshader/articles/2917540.html OpenGL 3.0 的出现改变了过去 OpenGL 一定会向下兼容的特性,在一定程度上简化了 API 的臃肿以及增加了 API 的灵活度。
3.x 开始了一种全新的工作方式,我读过各种文章和评论,它们都希望“远离已弃用的功能, 例如 glBegin(),glEnd()”,但还有很多书我见过的教程都使用该方法。
从发展历程上看,OpenGL 1.0~OpenGL 1.5 是经典的固定管线时代;OpenGL 2.0~OpenGL 2.1 是固定管线和可编程管线并存的时代;OpenGL 3.0~OpenGL 4.x 开始是可编程管线崛起的时代。
GLSL 语法 | OpenGL 版本 | Date | Shader Preprocessor |
---|---|---|---|
1.10.59 | 2.0 | 30 April 2004 | #version 110 |
1.20 .8 | 2.1 | 07 September 2006 | #version 120 |
1.30.10 | 3.0 | 22 November 2009 | #version 130 |
1.40.08 | 3.1 | 22 November 2009 | #version 140 |
1.50.11 | 3.2 | 04 December 2009 | #version 150 |
3.30.6 | 3.3 | 11 March 2010 | #version 330 |
4.00.9 | 4.0 | 24 July 2010 | #version 400 |
OpenGL ES and WebGL use OpenGL ES Shading Language (abbreviated: GLSL ES or ESSL). (Android, iOS, WebGL) OpenGL 2.0(#version 110)发布于 2004 年,OpenGL 2.1(#version 120)发布于 2006 年,OpenGL ES 2.0 发布于 2009 年。
GLSL ES 语法 |
OpenGL ES 版本 |
WebGL 版本 |
Based on GLSL 语法 |
Date | Shader Preprocessor |
---|---|---|---|---|---|
1.00.17 | 2.0 | 1.0 | 1.20 | 12 May 2009 | #version 100 |
3.00.6 | 3.0 | 2.0 | 3.30 | 29 January 2016 | #version 300 es |
OpenGL ES 是从 OpenGL 裁剪定制而来的,去除了 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性。
OpenGL ES Version | OpenGL Version |
---|---|
OpenGL ES 1.0 | OpenGL 1.3 |
OpenGL ES SC 1.0 | OpenGL 1.3 |
OpenGL ES 1.1 | OpenGL 1.5 |
OpenGL ES 2.0 | OpenGL 2.0 |
OpenGL ES 3.0 | OpenGL 4.0+ |
Unity Macro | Target platform |
---|---|
SHADER_API_GLES | OpenGL ES 2.0 |
SHADER_API_GLES3 | OpenGL ES 3.0/3.1 |
OpenGL_ES_2.x 为可编程渲染管线(Programmable)而设计。 2.x 并不向下兼容 1.x。from
OpenGL ES 2.0 简单介绍 from 在线繁体字转换器 by
OpenGL based Graphics : A state machine4 It's a state machine - Setup the stage, lighting, actors… Then draw it.
Handle = get_platform_specific_window_handle();
eglGetDisplay(handle);
eglInitialize();
eglBindAPI(EGL_OPENGL_ES_API);
eglChooseConfig();
eglCreateWindowSurface();
eglCreateContex();
eglMakeCurrent();
float afVertices [] = {...};
glEnableVertexAttribArray(0);
glVertexAttribPointer(VERTEX_ARRAY, GL_FLOAT, GL_FALSE, afVertices);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
eglSwapBuffers(eglDisplay, eglSurface);