(转)android开发之OpenGL

3 篇文章 0 订阅
1 篇文章 0 订阅

一、什么是OpenGL
1、OpenGL是一种应用程序编程接口,它是一种可以对图形硬件设备特性进行访问的软件库
2、OpenGL被设计为一个硬件无关的接口,因此我们可以在多种不同的图形硬件系统上,或者完全通过软件的方式实现OpenGL接口
3、OpenGL也没有提供任何用于表达三维物体模型,或者读取图像文件的操作。我们需要通过一系列的几何图元来创建三维空间物体(点,线段,三角形,以及patch)!
4、OpenGL API是过程性的,不是描述性的,即OpenGL不是面向对象的,所以OpenGL无法利用面向对象的特性。使用的时候只需要:程序与OpenGL的实现链接就可以了
5、软件实现:是对OpengGL函数调用时作出的响应并创建二维或三维图像的函数库
硬件实现:则是通过设置能够绘制图形或图像的图形卡驱动程序
6、应用领域:视频、图形、图片处理,2D/3D游戏引擎开发,科学可视化,医学软件的开发 ,CAD(计算机辅助技术),虚拟实境(AR VR),AI人工智能

二、OpenGL ES和OpenGL有什么关系?
1、OpenGL ES是OpenGL的子集,针对手机、PDA和游戏主机嵌入式设备而设计
2、OpenGL ES 是从 OpenGL 裁剪定制而来的,去除了 glBegin/glEnd,四边形(GL_QUADS)、多边形(GL_POLYGONS)等复杂图元等许多非绝对必要的特性,剩下最核心有用的部分。
可以理解成:OpenGL ES是一个移动平台上OpenGL 的精简规范

二、OpenGL程序需要执行的主要操作步骤
1、从OpenGL的几何图元中设置数据,用于构建形状
2、使用不同的着色器对输入的图元数据执行计算操作,判断位置,颜色以及其他渲染属性。
3、将输入图元的数学描述 转换为与屏幕位置对应的像素片元,也称(光栅化)。
4、针对光栅化过程产生的每个片元,执行 片元着色器,从而决定这个片元的最终颜色和位置
5、如果有必要 可以对片元执行一些额外操作。
例如:判断片元对应的对象是否可见,或者将片元的颜色与当前屏幕位置的颜色进行融合
OpenGL的函数是采用以下的书写格式: glColor3f(…)
<函数库前缀> <根命令> <可选的参数数量> <可选的参数类型>

三、OpenGL的优势
CPU与GPU之间传递数据通常是通过控制器内存之间传递,传递速度非常的慢,内存在复制数据时,CPU和GPU都不能操作这个数据。
OpenGL很好的解决这个问题,OpenGL创建了缓存区域,能够连续的管理RAM,保证数据传输不影响GPU处理数据效率。

四、GLSL语言
GLSL是一门专门为图形开发设计的编程语言。
(一)向量初始化:
1、声明变量的初始化
vec3 xyz=vec3(1.0,1.0,1.0);
float x= xyz.x;
vec3 rgb=vec3(1.0,1.0,1.0);
float r=rgb.r;
float g=rgb.g;
当三个值相等的时候
vec3 rgb=vec3(1.0 );等价于vec3 rgb=vec3(1.0,1.0,1.0);
2、类型之间等价交换
vec3 xyz1=vec3(1.0,1.0,1.0);
vec3 xyz2=vec3(xyz1);
3、截短
vec3 xyz1=vec3(1.0,1.0,1.0);
vec2 xy=vec2(xyz1);
4、加长
vec2 xy=vec2(xyz1);
vec3 xyz1=vec3(xy ,1.0);

(二)矩阵
1、矩阵在3D开发中的作用:位移,旋转,缩放
2、矩阵初始化
以下三种写法得到效果是一样的:
mat3 m=( 1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0);

vec3 f1=vec3(1.0,2.0,3.0);
vec3 f2=vec3(4.0,5.0,6.0);
vec3 f3=vec3(7.0,8.0,9.0);
mat3 m=mat3( f1,f2,f3 );

vec2 f1=vec2(1.0,2.0);
vec2 f2=vec2(4.0,5.0);
vec2 f3=vec2(7.0,8.0);
mat3 m=mat3(f1,3.0,f2,6.0,f3 ,9.0 )

m=mat3(4.0); 为特征值都为4.0的对角矩阵
3、gl_position顶点着色器是vec4,而不是vec3,因为3D图形采用了4*4的矩阵,矩阵乘法要求n行m列乘m行p列。

(三)内建函数
1、提供独特硬件功能访问的接口
2、数学函数:如abs(求模)、三角函数等

转自:https://blog.csdn.net/xuyankuanrong/article/details/79561565
https://blog.csdn.net/xuyankuanrong/article/details/79998061

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值