当前位置:  编程技术>移动开发
本页文章导读:
    ▪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);//进行混合 

    
[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)来表示。

    
[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:优化技巧

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3