- 浏览: 64161 次
-
最新评论
文章列表
一、Surface
Surface就是“表面”的意思。在SDK的文档中,对Surface的描述是这样的:“Handle onto a raw buffer that is being managed by the screen compositor”,翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄”,这句话包括下面两个意思:
1.通过Surface(因为Surface是句柄)就可以获得原生缓冲器以及其中的内容。就像在C语言中,可以通过一个文件的句柄,就可以获得文件的内容一样;
2.原生缓冲器(rawbuffer)是用于保存 ...
- 2013-02-26 19:57
- 浏览 587
- 评论(0)
Android中对View的更新有很多种方式,使用时要区分不同的应用场合。我感觉最要紧的是分清:多线程和双缓冲的使用情况。1.不使用多线程和双缓冲 这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式地调用View对象中的invalidate()方法即可。系统会自动调用 View的onDraw()方法。2.使用多线程和不使用双缓冲
- 2013-02-26 19:02
- 浏览 647
- 评论(0)
glDrawArrays = DrawPrimitive
glDrawElements = DrawIndexPrimitive
比如画一个由2个3角形组成的正方形,左上角坐标是l,t,右下角坐标是r,b
使用glDrawArrays绘制时,画2个三角形,需要这样传:
(l,t),(r,t),(l,b)
(r,t),(r,b),(l,b)
而用glDrawElements画的话可以这样
float coord[4][2]={{l,t},{r,t},{r,b},{l,b}};
绘制时:
0,1,3
1,2,3
也就是说glDrawArrays传输或指定的数据是最终 ...
- 2013-02-26 17:19
- 浏览 1343
- 评论(0)
继续我们的iPhone OpenGL ES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可以看见东西。 它只是提供一种十分单调的整体光让我们看到物体。但是如果不定义光效,物体看上去都很单调,就像你在第二部分程序中看到的那样。
阴影模型(Shade Model)
在深入讨论OpenGL ES是怎样处理光线之前,重要的是要了解OpenGL ES实际上定义了两种shad
- 2013-02-26 16:49
- 浏览 558
- 评论(0)
这一节看看混合色的开启,主要是实现立方体半透明的效果,但是今天这篇文章因为内容比较少,所以就增加了点触事件,当触及屏幕的时候,开启半透明效果,再次点击就关闭混合效果,效果图如下:
开启透明混色前
开启半透明混色后
接着上一节的Android高级进阶九
Android OpenGL对立方体进行光照处理代码,我们接着整改,看代码:
Java代码
//设置光线,,1.0f为全光线,a=50%
gl.glColor4f(1.0f,1.0f,1.0f,0.5f);
//基于源象素alpha通道值的半透明混合函数
gl.glBlendFunc(GL10.GL_SRC_AL ...
- 2013-02-26 16:45
- 浏览 981
- 评论(0)
最迷人的要算灯光了,所以上帝说的第一句话就是 — “要有光”。
OpenGL ES 1.1支持最多同时启用八个灯光,可以是平行光、点光源、聚光灯。
使用灯光前,先要启用灯光总开光,然后再启用 0-7 八个光源中的某(几)盏,通过 glEnable函数可以打开这两种开关
?
1
2
gl.glEnable(GL10.GL_LIGHTING); // 启用灯光总开关
gl.glEnable(GL10.GL_LIGHTIn);// 启用第n盏灯 ( n = 0...7 )
然后通过 glLight 系统函数设置灯光属性即可,看下这几个函数
...
这一章将在你的程序中加入灯光,使场景看起来和真实场景一样。
灯光
opengl中灯光分为好几种,都可以加入到你的场景中。
Ambiend Light 环境光
环境光没有确切的来源方向,当环境光照射到物体时,光被反射到各个方向。
Di ...
- 2013-02-26 16:40
- 浏览 533
- 评论(0)
继续我们的iPhone OpenGL ES之旅,我们将讨论光效。目前,我们没有加入任何光效。幸运的是,OpenGL在没有设置光效的情况下仍然可以看见东西。 它只是提供一种十分单调的整体光让我们看到物体。但是如果不定义光效,物体看上去都很单调,就像你在第二部分程序中看到的那样。
阴影模型(Shade Model)
在深入讨论OpenGL ES是怎样处理光线之前,重要的是要了解OpenGL ES实际上定义了两种shade model,GL_FLAT和GL_SMOOTH。我们将不会讨论GL_FLAT,因为这只会让你的程序看上去来自九十年代:
GL_FL ...
- 2013-02-26 16:35
- 浏览 479
- 评论(0)
OpenGL ES是OpenGL三维图形API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。 Ophone目前支持OpenGL ES 1.0 ,OpenGL ES 1.0 是以 OpenGL 1.3 规范为基础的,OpenGL ES 1.1 是以 OpenGL 1.5 规范为基础的。本文主要介绍利用OpenGL ES绘制图形方 ...
- 2013-02-26 16:26
- 浏览 636
- 评论(0)
为了能看出3D效果,给场景中添加光源。如果没有光照,绘出的球看上去和一个二维平面上圆没什么差别,如下图,左边为有光照效果的球体,右边为同一个球体但没有设置光源,看上去就没有立体效果,因此OpenGL 光照效果对显 ...
- 2013-02-26 16:22
- 浏览 1384
- 评论(0)
在Android上使用OpenGL ES开发时,模仿自然界的各种现象是很常见的,比如光照、雾气、飘动等效果,今天我们就来使用OpenGL ES实现自然界的雾气效果,雾气效果很简单,我们今天就使用系统自带的三种雾气渲染算法来实现不同的效果,当然你可以自己设置雾气的颜色和范围程度等。
本节的代码是基于Android OpenGL | ES给立方体进行纹理映射一文的代码上修改的,我会重点提到雾气渲染这一块,当然在文章最后你也可以下载到完整的源码。效果图:
我们在继承Renderer类的GLRenderer的基础上加上一些雾气使用的成员变量:
Java代码
//雾气模式
priva ...
看到了Android
OpenGL开发四棱锥和立方体之后,我们是不是增加了使用OpenGL开发图形的兴趣啊,呵呵,希望大家保持热情啊,今天我们接着给已经画好的立方体进行文理处理,效果图如下:
可以看到,我们对正方体做了如下处理:
给正方体增加3轴旋转功能;
给正方体添加纹理;
注意点:真机上不显示纹理贴图的解决办法~~
Android OpenGL给立方体进行纹理映射时真机一片空白
具体如何实现,我们接着看~~~
Java代码
//当窗口被创建时我们可以做些初始化工作
@Override
publicvoid
- 2013-02-26 16:12
- 浏览 1458
- 评论(0)
一、基础知识:
1..光照介绍:
①环境光:
来自四面八方,所有场景中的对象都处于环境光的照射中。
②漫射光:
由特定的光源产生,并在场景中的对象表面产生反射。
处于漫射光直接照射下的任何对象表面都变得很亮,而几乎未被照射到的区域就显示得要暗一些。
2.光照使用:
①设定光源参数:
//环境光
private float[] lightAmbient;
private FloatBuffer AmbientBuffer;
//漫射光
private float[] lightDiffuse;
private FloatBuffer diffuseBuffer; ...
- 2013-02-26 16:08
- 浏览 626
- 评论(0)
以前在Delphi下用Canvas用惯了,很少直接使用GDI API,今天转换到VC下了,哪只有重新温习GDI了,首先先简单说说GDI体系结构。
GDI是微软设计的一套API,为应用程序提供设备无关的接口,包括视频显示、打印机、画图仪和传真机。 ...
- 2013-02-26 08:34
- 浏览 560
- 评论(0)
VC: GDI绘图基本步骤总结
一、获得绘图的窗口句柄
方法(详细参数及其调用可以看考MSDN):
1、 HWND FindWindow(LPCTSTR lpClassName, LPCTSTR lpWindowName)
HWND FindWindowEx(HWND hwndParent, HWND hwndChildAfter,LPCTSTR lpClassName, LPCTSTR lpWindowName)
2、 HWND Window ...
- 2013-02-26 08:28
- 浏览 739
- 评论(0)