随笔分类 - OpenGL ES
摘要:OpenGL ES 中Depth Buffer 保存了像素与观测点之间的距离信息,在绘制3D图形时,将只绘制可见的面而不去绘制隐藏的面,这个过程叫”Hidden surface removal” ,采用的算法为”The depth buffer algorithm”。一般来说,填充的物体的顺序和其顺序是一致的,而要准确的显示绘制物体在Z轴的前后关系,就需要先绘制距离观测点(ViewPoint)最远的物体,再绘制离观测点较远的物体,最后绘制离观测点最近的物体,因此需要对应所绘制物体进行排序。OpenGL ES 中使用Depth Buffer存放需绘制物体的相对距离。The depth buffe
阅读全文
摘要:OpenGL ES 中的FrameBuffer 指的是存储像素的内存空间。对应一个二维图像,如果屏幕分辨率为1280X1024 ,如果屏幕支持24位真彩色 (RGB),则存储这个屏幕区域的内存至少需要1024X1280X3个字节。此外如果需要支持透明度(Alpha),则一个像素需要4个字节。对应3D图像来说,上面存储显示颜色的Buffer称为Color Buffer,除Color Buffer之外,还需要存储每个像素和View Point之间的距离,OpenGL ES中使用Depth Buffer 存储像素与眼睛(eye 或是view point)的距离,Depth Buffer也可称为z B
阅读全文
摘要:OpenGL ES 只能通过绘制三角形来构造几何图形,比如前面绘制的20面体Android OpenGL ES 开发教程(12):绘制一个20面体,通过增加正多面体的边数,就可以构造出一个球体:在项目中创建一个Sphere 类,它的Draw 方法,通过绘制三角形来构造球体,并且为其添加法线,法线主要用于光照效果,将在后面介绍。public void draw(GL10 gl) { float theta, pai; float co, si; float r1, r2; float h1, h2; float step = 2.0f; float[][...
阅读全文
摘要:OpenGL ES 使用也只能使用三角形来定义一个面(Face),为了获取绘制的高性能,一般情况不会同时绘制面的前面和后面,只绘制面的“前面”。虽然“前面”“后面”的定义可以应人而易,但一般为所有的“前面”定义统一的顶点顺序(顺时针或是逆时针方向)。 只绘制“前面”的过程称为”Culling”。下面代码设置逆时针方法为面的“前面”:gl.glFrontFace(GL10.GL_CCW);打开 忽略“后面”设置gl.glEnable(GL10.GL_CULL_FACE);明确指明“忽略“哪个面的代码如下:gl.glCullFace(GL10.GL_BACK);
阅读全文
摘要:OpenGL ES 支持的颜色格式为RGBA模式(红,绿,蓝,透明度)。颜色的定义通常使用Hex格式0xFF00FF 或十进制格式(255,0,255), 在OpenGL 中却是使用0…1之间的浮点数表示。 0为0,1相当于255(0xFF)。我们在Android OpenGL ES 开发教程(19):绘制迷你太阳系 绘制了红太阳,蓝地球,白月亮。使用的是glColor4f 来指定颜色的. 这是使用的Flat Coloring (单色).Flat coloring(单色)是通知OpenGL使用单一的颜色来渲染,OpenGL将一直使用指定的颜色来渲染直到你指定其它的颜色。指定颜色的方法为publ
阅读全文