
OpenGL ES知识点
对学习OpenGL ES过程中的知识点进行记录,提升Android技术的开发能力
热之决斗者
这个作者很懒,什么都没留下…
展开
-
OpenGL高级GLSL
顶点着色器的输出向量gl_Position,和片段着色器的gl_FragCoord;gl_PointSize:其中一个图元是GL_POINTS,如果使用它的话,每一个顶点都是一个图元,都会被渲染为一个点。我们可以通过OpenGL的glPointSize函数来设置渲染出来的点的大小,但我们也可以在顶点着色器中修改这个值。GLSL定义了一个叫做gl_PointSize输出变量,它是一个fl...原创 2020-03-15 20:24:28 · 363 阅读 · 0 评论 -
OpenGL三角形绘制
在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线管理的。图形渲染管线可以被划分为两个主要部分:第一部分把你的3D坐标转换为2D坐标,第二部分是把2D坐标转变为实际的有颜色的像素。1 着色器渲染在3D转换2D过程中,主要就是在GPU上...原创 2019-08-25 08:42:01 · 1005 阅读 · 0 评论 -
Android图形编程篇--OpenGL绪论
1.1 OpenGL简介:OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 OpenGL 1.5 规范为基础的,1.1完全兼容1.0。OpenGL ES 2.0 则是参照 OpenGL 2.0 规范定义的。简单的来说,OpenGL ES是OpenGL针对嵌入式应用的简化版,也就是android使用的标准。OpenGL ES 1.1强调api...原创 2019-01-22 13:18:24 · 264 阅读 · 0 评论 -
Android图形编程篇--绘制基础图形
介绍: 在OpenGL中,任何事物都在3D空间中,而屏幕和窗口却是2D像素数组,这导致OpenGL的大部分工作都是关于把3D坐标转变为适应你屏幕的2D像素。3D坐标转为2D坐标的处理过程是由OpenGL的图形渲染管线(Graphics Pipeline,大多译为管线,实际上指的是一堆原始图形数据途经一个输送管道,期间经过各种变化处理最终出现在屏幕的过程)管理的。图形渲染管线可以被划...原创 2019-01-23 16:20:34 · 2060 阅读 · 0 评论 -
Android图形编程篇--OpenGL实现三角形隧道效果
学了这么久的Android OpenGL的知识,今天花一部分时间实现一个三角形隧道的效果,这个案例结合了一些基础的Android OpenGL ES的知识点,效果图如下图所示。三角隧道效果示图 首先,在GLSurfaceView的渲染器Render中实现onSurfaceCreated方法,该方法主要完成屏幕的初始化操作等,包括屏幕颜色清空,允许深度缓存测试,设置灯光光效等。这里解...原创 2019-02-13 22:45:00 · 1974 阅读 · 0 评论 -
OpenGL Create Window
OpenGL 标准没有指定任何用于建立和使用窗口的 API。glutInit(&argc,argv);这个函数是为了初始化 GLUT。里面的参数可以直接从命令行中得到,同时可以包含其他有用的选项比如 '-sync' 和 '-gldebug',这样可以自动的检查GL的错误并独立的显示它们。glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);...原创 2019-08-11 22:29:45 · 540 阅读 · 0 评论 -
OpenGL索引绘制
OpenGL 提供了多个绘制函数。一般使用的 glDrawArrays()函数属于“顺序绘制”的类别。这意味着顶点缓冲区以指定的偏移量进行扫描,它将每 X( 1 个顶点时表示点,两个顶点表示线,等等)个顶点作为一个图元。这种方法使用起来很方便,但是它的缺点是如果有多个图元共享通一个顶点,那么这个被共享的顶点就会在顶点缓冲区中存在多次。即,在顺序绘制中不存在共享的概念。要实现顶点的共享,我们需要使用...原创 2019-08-11 21:32:49 · 758 阅读 · 0 评论 -
OpenGL纹理贴图
1 基础背景如果想让图形看起来更真实,我们就必须有足够多的顶点,从而指定足够多的颜色。这将会产生很多额外开销,因为每个模型都会需求更多的顶点,每个顶点又需求一个颜色属性。纹理对象,纹理单元,采样器对象,采样器一致变量。纹理对象包含它本身纹理图片的数据,比如纹素。纹理可以是不同的类型的(1D,2D等等),分别有不同维度。其底层数据类型有不同的格式(RGB,RGBA等等)。纹理对象并不...原创 2019-09-14 21:57:48 · 4801 阅读 · 0 评论 -
OpenGL透明度
简介透明表示一个物体不是纯色的。透明的物体可以是完全透明的(让所有的颜色穿过),或者是半透明的(它让颜色通过,同时也会显示自身的颜色)。一个物体的透明度是通过它颜色的aplha值来决定的。Alpha颜色值是颜色向量的第四个分量,第四个分量设置为1.0,让这个物体的透明度为0.0,而当alpha值为0.0时物体将会是完全透明的。当alpha值为0.5时,物体的颜色有50%是来自物体自身的颜色,5...原创 2019-09-08 09:51:03 · 5231 阅读 · 0 评论 -
OpenGL深度测试和模板测试
1.简介深度缓冲就像颜色缓冲(Color Buffer)(储存所有的片段颜色:视觉输出)一样,在每个片段中储存了信息,并且(通常)和颜色缓冲有着一样的宽度和高度。当深度测试(Depth Testing)被启用的时候,OpenGL会将一个片段的的深度值与深度缓冲的内容进行对比。OpenGL会执行一个深度测试,如果这个测试通过了的话,深度缓冲将会更新为新的深度值。如果深度测试失败了,片段将会被...原创 2019-09-05 22:38:16 · 938 阅读 · 0 评论 -
OpenGL坐标系统和相机空间
在OpenGL的编程中,我们一般使用标准化设备坐标(Normalized Device Coordinate, NDC)。也就是说,每个顶点的x,y,z坐标都应该在-1.0到1.0之间,超出这个坐标范围的顶点都将不可见。一般而言,对使用者比较重要的有5个不同的坐标系统: 局部空间(Local Space,或者称为物体空间(Object Space)) 世界空间(World Sp...原创 2019-09-04 11:27:32 · 1280 阅读 · 0 评论 -
OpenGL变换操作
变换基础向量最基本的定义就是一个方向。或者更正式的说,向量有一个方向(Direction)和大小(Magnitude,也叫做强度或长度)。位移(Translation)是在原始向量的基础上加上另一个向量从而获得一个在不同位置的新向量的过程,从而在位移向量基础上移动了原始向量。在3D空间中旋转需要定义一个角和一个旋转轴(Rotation Axis)。物体会沿着给定的旋转轴旋转特定角度。如...原创 2019-09-03 00:59:19 · 804 阅读 · 0 评论 -
GLSL着色器
着色器语言是一种叫GLSL的类C语言。着色器的开头总是要声明版本,接着是输入和输出变量、uniform和main函数。每个着色器的入口点都是main函数,在这个函数中我们处理所有的输入变量,并将结果输出到输出变量中。当我们特别谈论到顶点着色器的时候,每个输入变量也叫顶点属性(Vertex Attribute)。1 数据类型GLSL中包含C等其它语言大部分的默认基础数据类型:int,fl...原创 2019-08-26 23:53:17 · 2528 阅读 · 0 评论