当前位置: 编程技术>移动开发
本页文章导读:
▪OpenGL中纹路过滤,简单光照和混合的使用 OpenGL中纹理过滤,简单光照和混合的使用
OpenGL中基本纹理过滤方式大致有三种,分别是NEAREST,LINEAR和Mipmapping,纹理质量依次递增。由于代码重复,这里就提一下设置过滤方式。glTexParamete.........
▪ Opengl-ES 步骤 Opengl-ES 方法
1.gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST); GL_PERSPECTIVE_CORRECTION_HINT时,是指定颜色和纹理坐标的插值质量. GL_FASTEST为使用速度最快的模式. GL_NICEST为使用质量最好的模.........
▪ Opengl ES教程 Opengl ES课程
1:项目介绍 2:Opengl ES概述 3:基本图形绘制 4:3D图形绘制及透视 5:光效 6:材质 7:纹理及纹理映射 8:隧道实例 9: 雾气 10:2D文字显示 11:飘动的旗帜 12:蒙板 13:离子系统 14:.........
[1]OpenGL中纹路过滤,简单光照和混合的使用
来源: 互联网 发布时间: 2014-02-18
OpenGL中纹理过滤,简单光照和混合的使用
OpenGL中基本纹理过滤方式大致有三种,分别是NEAREST,LINEAR和Mipmapping,纹理质量依次递增。由于代码重复,这里就提一下设置过滤方式。
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_NEAREST);
OpenGL中的光源有环境光和漫射光组成,定义时和设置颜色差不多(RGB+alpha参数)。
1.定义
GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; //环境光
GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; //漫射光
GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }; //光源位置
2.设置
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); //设置环境光
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); //设置漫射光
glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); //设置光源位置
3.启用
glEnable(GL_LIGHT1);
混合(颜色混合)是OpenGL中实现特效的常用手段,最常用的就是实现透明效果。关于混合的原理,nehe在教程中给出了一条数学公式:(Rs As + Rd (1 - As), Gs As + Gd (1 - As), Bs As + Bs (1 - As), As As + Ad (1 - As)),其实就是图形的RGB分量*alpha值+纹理的RGB分量*(1-alpha值),具体实现时无需关心原理,只需使用glColor4f()创建图形,设定相应的alpha值(0.0~1.0),再用glBlendFunc()进行混合即可
glColor4f(1.0f,1.0f,1.0f,0.5f); //创建图形,alpha值为0.5f,表示半透明
glBlendFunc(GL_SRC_ALPHA,GL_ONE);//进行混合
OpenGL中基本纹理过滤方式大致有三种,分别是NEAREST,LINEAR和Mipmapping,纹理质量依次递增。由于代码重复,这里就提一下设置过滤方式。
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR_MIPMAP_NEAREST);
OpenGL中的光源有环境光和漫射光组成,定义时和设置颜色差不多(RGB+alpha参数)。
1.定义
GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; //环境光
GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; //漫射光
GLfloat LightPosition[]= { 0.0f, 0.0f, 2.0f, 1.0f }; //光源位置
2.设置
glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); //设置环境光
glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); //设置漫射光
glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); //设置光源位置
3.启用
glEnable(GL_LIGHT1);
混合(颜色混合)是OpenGL中实现特效的常用手段,最常用的就是实现透明效果。关于混合的原理,nehe在教程中给出了一条数学公式:(Rs As + Rd (1 - As), Gs As + Gd (1 - As), Bs As + Bs (1 - As), As As + Ad (1 - As)),其实就是图形的RGB分量*alpha值+纹理的RGB分量*(1-alpha值),具体实现时无需关心原理,只需使用glColor4f()创建图形,设定相应的alpha值(0.0~1.0),再用glBlendFunc()进行混合即可
glColor4f(1.0f,1.0f,1.0f,0.5f); //创建图形,alpha值为0.5f,表示半透明
glBlendFunc(GL_SRC_ALPHA,GL_ONE);//进行混合
[2] Opengl-ES 步骤
来源: 互联网 发布时间: 2014-02-18
Opengl-ES 方法
1.gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
GL_PERSPECTIVE_CORRECTION_HINT时,是指定颜色和纹理坐标的插值质量.
GL_FASTEST为使用速度最快的模式.
GL_NICEST为使用质量最好的模式.
还有一个GL_DONT_CARE为由驱动设备来决定.
2.背面裁剪
背面裁剪,对于我们而言是很有用的,它能使物体在渲染时,不渲染我们看不见的一面,也就是背面。这样会大大缩短渲染宝贵的时间。
怎样来区分多面体中的哪一面是背面和前面。当渲染物体时,根据你指定的顶点数据,按照逆时针寻找顶点组成面,这样的面是前面
glFrontFace,它的参数可以是GL_CCW和GL_CW。默认GL_CCW(counter-clockwise winding),如果设置为GL_CW,前面则被指定为顶点数据中按照顺时针排列的面。
另一个可能有用的函数是glCullFace,它指定哪个面将被裁剪(不被渲染),可以设置为GL_FRONT,GL_BACK或者GL_FRONT_AND_BACK,默认值为GL_BACK。
3.清屏
glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
4.glMatrixMode(GL10.GL_MODELVIEW)
glMatrixMode(GL10.GL_PROJECTION);
glMatrixMode用来转换当前是模型矩阵还是投影矩阵,操作物体时使用模型矩阵,如平移、旋转、缩放等。设置观察物体的方式时,选择投影矩阵。
有两种观察事物的方式:一、正交投影或者叫平行投影,就是远处的物体和近处的物体看起来一样大。二、透视投影,人类眼睛正常观察的景象,及越远的物体看起来越小。
5.glLoadIdentity()
此函数的功能是重载单位矩阵,任何矩阵和单位矩阵相乘的结果不变。此函数的作用是使后续的操作不影响之前的操作
6.glEnableClientState(GL10.GL_VERTEX_ARRAY);
glEnableClientState(GL10.GL_COLOR_ARRAY);
启用顶点数组和颜色数组
7.glRotatef() 旋转
8.glTranslatef() 平移
9. glViewport(0, 0, width, height);
10. glFrustumf(-ratio, ratio, -1, 1, 1, 10);
glFrustumf用来创建透视视图
GLU.gluPerspective
GLfloat fovy --- 代表可视域。90度表示你可以看见左右所有一切事物,这和现实不匹配。 符合人类视角的是45度。
GLfloat aspect--- 这个参数表示透视比率,通常指窗口的宽高比。
GLfloat n &GLfloat f --- 指近距离和远距离的裁剪区域,只有在这个裁剪区域中的物体才可见。
glOrthof创建正交视图
11. glShadeModel
默认GL_SMOOTH方式。
//GL_FLAT 单色渲染,如果设置多个颜色,只有最后一组颜色启作用
//GL_SMOOTH 平滑模式,每个顶点都有自己的色彩,色彩之间的过渡也比较平滑。从运行结果中能看的很明显。
12. GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
如果你想改变观察角度,即摄像机的位置,可以修改投影矩阵。这很容易,使用GUL|ES库中的gluLookAtf函数可以很方便的实现。
这个函数有9个参数,由3组坐标向量组成。第一组表示你要将摄像机摆放的位置。第二组表示摄像机面对的方向。第三组表示摄像机的上方是哪个朝向,通常使用(0, 1, 0)来表示。
1.gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
GL_PERSPECTIVE_CORRECTION_HINT时,是指定颜色和纹理坐标的插值质量.
GL_FASTEST为使用速度最快的模式.
GL_NICEST为使用质量最好的模式.
还有一个GL_DONT_CARE为由驱动设备来决定.
2.背面裁剪
背面裁剪,对于我们而言是很有用的,它能使物体在渲染时,不渲染我们看不见的一面,也就是背面。这样会大大缩短渲染宝贵的时间。
怎样来区分多面体中的哪一面是背面和前面。当渲染物体时,根据你指定的顶点数据,按照逆时针寻找顶点组成面,这样的面是前面
glFrontFace,它的参数可以是GL_CCW和GL_CW。默认GL_CCW(counter-clockwise winding),如果设置为GL_CW,前面则被指定为顶点数据中按照顺时针排列的面。
另一个可能有用的函数是glCullFace,它指定哪个面将被裁剪(不被渲染),可以设置为GL_FRONT,GL_BACK或者GL_FRONT_AND_BACK,默认值为GL_BACK。
3.清屏
glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
4.glMatrixMode(GL10.GL_MODELVIEW)
glMatrixMode(GL10.GL_PROJECTION);
glMatrixMode用来转换当前是模型矩阵还是投影矩阵,操作物体时使用模型矩阵,如平移、旋转、缩放等。设置观察物体的方式时,选择投影矩阵。
有两种观察事物的方式:一、正交投影或者叫平行投影,就是远处的物体和近处的物体看起来一样大。二、透视投影,人类眼睛正常观察的景象,及越远的物体看起来越小。
5.glLoadIdentity()
此函数的功能是重载单位矩阵,任何矩阵和单位矩阵相乘的结果不变。此函数的作用是使后续的操作不影响之前的操作
6.glEnableClientState(GL10.GL_VERTEX_ARRAY);
glEnableClientState(GL10.GL_COLOR_ARRAY);
启用顶点数组和颜色数组
7.glRotatef() 旋转
8.glTranslatef() 平移
9. glViewport(0, 0, width, height);
10. glFrustumf(-ratio, ratio, -1, 1, 1, 10);
glFrustumf用来创建透视视图
GLU.gluPerspective
GLfloat fovy --- 代表可视域。90度表示你可以看见左右所有一切事物,这和现实不匹配。 符合人类视角的是45度。
GLfloat aspect--- 这个参数表示透视比率,通常指窗口的宽高比。
GLfloat n &GLfloat f --- 指近距离和远距离的裁剪区域,只有在这个裁剪区域中的物体才可见。
glOrthof创建正交视图
11. glShadeModel
默认GL_SMOOTH方式。
//GL_FLAT 单色渲染,如果设置多个颜色,只有最后一组颜色启作用
//GL_SMOOTH 平滑模式,每个顶点都有自己的色彩,色彩之间的过渡也比较平滑。从运行结果中能看的很明显。
12. GLU.gluLookAt(gl, 0, 0, -5, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
如果你想改变观察角度,即摄像机的位置,可以修改投影矩阵。这很容易,使用GUL|ES库中的gluLookAtf函数可以很方便的实现。
这个函数有9个参数,由3组坐标向量组成。第一组表示你要将摄像机摆放的位置。第二组表示摄像机面对的方向。第三组表示摄像机的上方是哪个朝向,通常使用(0, 1, 0)来表示。
[3] Opengl ES教程
来源: 互联网 发布时间: 2014-02-18
Opengl ES课程
1:项目介绍
2:Opengl ES概述
3:基本图形绘制
4:3D图形绘制及透视
5:光效
6:材质
7:纹理及纹理映射
8:隧道实例
9: 雾气
10:2D文字显示
11:飘动的旗帜
12:蒙板
13:离子系统
14:变形
15:多级纹理--圆柱体 -球体
16:曲面映射
17:多重纹理
18:反射(剪裁平面,蒙板缓存)
19:图像字体
20:反走样
21: 缓存及片元测试
22:贝塞尔曲面
23:BLT函数
24:TGA文件
25:多重视口
26:轨迹球
27:射 线拾取
28:地形
29:天空盒
30:帧动画之MD2模型装载
31:骨骼动画之MS3D模型装载
32:碰撞检测
高级篇:
Android 3D游戏DEMO实现(第33~44课)
1:项目介绍(项目演示、技术需求)
2:引擎框架(引擎整体构 架,NDK框架)
3:工具
4:摄像机
5:光效管理
6:纹理管理
7:模型管理
8:动画管理
9: 游戏场景(天空\地形-ROAM)
10:八叉树碰撞检测
11:拾取技术
12:优化技巧
1:项目介绍
2:Opengl ES概述
3:基本图形绘制
4:3D图形绘制及透视
5:光效
6:材质
7:纹理及纹理映射
8:隧道实例
9: 雾气
10:2D文字显示
11:飘动的旗帜
12:蒙板
13:离子系统
14:变形
15:多级纹理--圆柱体 -球体
16:曲面映射
17:多重纹理
18:反射(剪裁平面,蒙板缓存)
19:图像字体
20:反走样
21: 缓存及片元测试
22:贝塞尔曲面
23:BLT函数
24:TGA文件
25:多重视口
26:轨迹球
27:射 线拾取
28:地形
29:天空盒
30:帧动画之MD2模型装载
31:骨骼动画之MS3D模型装载
32:碰撞检测
高级篇:
Android 3D游戏DEMO实现(第33~44课)
1:项目介绍(项目演示、技术需求)
2:引擎框架(引擎整体构 架,NDK框架)
3:工具
4:摄像机
5:光效管理
6:纹理管理
7:模型管理
8:动画管理
9: 游戏场景(天空\地形-ROAM)
10:八叉树碰撞检测
11:拾取技术
12:优化技巧
最新技术文章: