`

opengl es glEnable 方法设置图形显示能力

 
阅读更多
opengl es API里面有个glEnable方法,这个方法可以设置的常量很多,而且对于我等新入门的人来说也非常的难理解,网上的资料也是比较少,因此学习难度还是比较大的。下面还是以beginning android games的例子为例。
先讲一下GL_DEPTH_TEST模式,开启这个模式后,opengl 会起用深度测试模式,以下图为例:


上面的每当两个图相加时,总是显示颜色深度较小的那个颜色,这就是深度比较的结果,如果颜色深度一样,则还是显示原来的那个颜色。大体用法也很简单:
、、、、
gl.glEnable(GL10.GL_DEPTH_TEST);
            
 vertices.bind();
 vertices.draw(GL10.GL_TRIANGLES, 0, 6);
 vertices.unbind();
            
 gl.glDisable(GL10.GL_DEPTH_TEST);
、、、、、

先开启深度测试模式,再画图,最后关闭此模式。例如先画一个红色的三角形,再画一个绿色的三角形,如果两个三角形的颜色深度一样,则会显示:


即还是显示原来的红色,如果没有启用深度测试模式,则绿色的三角形应该在前面。

下面再讲一个GL_BLEND即融合模式,这个东西的作用就是将重叠的图形融合在一起,用法大体如下:
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
            
vertices.bind();
vertices.draw(GL10.GL_TRIANGLES, 3, 3);//绿色三角形
vertices.draw(GL10.GL_TRIANGLES, 0, 3);//红色三角形
vertices.unbind();
            
gl.glDisable(GL10.GL_BLEND);           
gl.glDisable(GL10.GL_DEPTH_TEST);

显示如下:


需要注意的是上面的两个三角形颜色深度是不一样的,即红色三角形的颜色深度要浅一些,所以如果是先画红三角形的话,那么绿色三角形被遮挡的部分因为颜色太深就会显示不出来,结果就会像下面这样:



再说一点,颜色深浅是由RGBA中的A决定的,越小优先级越高。

本人理解的范围内就是这些了,不排除以后可能会有更多的理解,如果有且有那个时间精力的话再来完善此篇文章,在公司实在没什么事干,无聊时只得写写博客来打发时间了。
  • 大小: 55.9 KB
  • 大小: 2 KB
  • 大小: 1.9 KB
  • 大小: 1.8 KB
分享到:
评论

相关推荐

    opengles的一些图形绘制

    在“opengles的一些图形绘制”这个主题中,我们主要关注的是如何使用OpenGL ES API来创建和绘制不同的几何形状。下面将详细介绍基于OpenGL ES的图形绘制技术: 1. **基础概念**:OpenGL ES是一个跨语言、跨平台的...

    opengl es 2.0 spec

    OpenGL ES 2.0提供了一系列命令,用于设置渲染状态、绘制图形等操作。这些命令遵循GL API的设计原则,易于学习和使用。 ##### 3.2 状态管理 OpenGL ES 2.0的状态管理机制非常灵活,允许开发者在不同场景之间快速...

    OpenGLES demo - 5. 深度测试

    在"OpenGLES demo - 5. 深度测试"这个项目中,我们将深入探讨如何利用OpenGL ES实现深度测试,并通过源码分析来理解其实现细节。 首先,深度测试的基本概念是基于每个像素的Z值(或称为深度值),它表示该像素在3D...

    opengl es 1.1版本

    OpenGL ES 1.1是在OpenGL ES 1.0的基础上进行了一些功能增强和错误修复,是移动平台早期进行3D图形编程的重要标准。 在OpenGL ES 1.1中,主要包含了以下核心概念和知识点: 1. **固定功能管道**:这是OpenGL ES ...

    QtOpenGL文字显示

    在创建OpenGL上下文时,可以设置适当的采样率,然后在绘制前启用glEnable(GL_MULTISAMPLE)。这会增加渲染的复杂性,但可以显著提升视觉质量。 在提供的压缩包文件中,"GL"可能是指与OpenGL相关的源代码或资源文件。...

    Android OpenGL ES 绘制三维/空间坐标系透明

    OpenGL ES 是一种在嵌入式设备上广泛使用的图形库,特别是在Android系统中,它用于创建高性能的2D和3D图形。在这个主题中,我们主要关注如何在Android平台上使用OpenGL ES绘制一个透明的三维/空间坐标系。这个过程...

    西蒙iPhone-OpenGL ES 教程【中文翻译版PDF】

    这些参数共同定义了OpenGL ES渲染环境,并指定了它如何映射到iPhone的显示屏幕上。 glViewport的调用定义了OpenGL ES渲染画面的具体大小,它必须与当前视图的尺寸相匹配。glFrustumf函数定义了透视投影的裁剪空间,...

    opengles之点精灵介绍

    OpenGL ES(Open Graphics Library for Embedded Systems)是OpenGL的嵌入式版本,主要为移动设备如智能手机、平板电脑等提供3D图形渲染能力。在OpenGL ES中,“点精灵”(Point Sprites)是一种特殊的渲染技术,它...

    OpenGLES demo - 16. 蒙板 Stencil

    在实际应用中,理解并熟练运用蒙板是提升OpenGLES图形渲染能力的重要一环。通过调整模板测试的参数和逻辑,开发者可以创造出许多富有创意的视觉效果,为用户带来更加丰富的交互体验。 这个"OpenGLES demo - 16. ...

    Android下 OpenGL ES 2.0 混合半透明效果demo

    OpenGL ES 2.0是Android平台上用于图形渲染的重要框架,特别是在移动设备上,它为开发者提供了高效、低级别的硬件加速3D图形编程接口。在这个"Android下 OpenGL ES 2.0 混合半透明效果demo"中,我们将探讨如何在...

    OpenGL ES 教程 for iphone

    OpenGL ES 是一种针对嵌入式系统的图形库,广泛应用于移动设备如 iPhone,用于创建和渲染2D、3D图形。本教程旨在引导开发者如何在iPhone上使用OpenGL ES进行图形编程,特别是通过启用深度缓冲实现更真实的3D效果。 ...

    android开发之OpenGL ES教程

    本教程将聚焦于Android上的OpenGL ES 3D游戏开发,介绍如何设置OpenGL ES视图,这是任何图形应用的基础。 首先,我们要了解的是`GLSurfaceView`。在Android 1.5版本中引入的`GLSurfaceView`是一个API类,它为编写...

    OpenGL ES 雾化效果

    OpenGL ES 是一种嵌入式图形库,主要用于移动设备和嵌入式系统,提供了一套用于绘制2D和3D图形的标准接口。在这个话题中,我们将深入探讨如何在OpenGL ES中实现雾化效果,这是一种增强场景真实感的重要技术。 雾化...

    esapi.rar_OpenGLES

    2. **渲染管线**:OpenGLES使用渲染管线处理图形,从顶点数据开始,经过变换、投影、裁剪、屏幕映射等一系列步骤,最终在屏幕上显示。 3. **状态机模型**:OpenGLES采用状态机模型,开发者可以设置各种图形状态,如...

    android OpenGL ES 地球仪绘制——球体绘制及纹理映射——源码

    在Android应用中,OpenGL ES 常用于游戏开发、3D图形显示和复杂视觉效果的实现。本教程将深入探讨如何使用OpenGL ES在Android上绘制地球仪,包括球体的几何构建、纹理映射以及交互式的触摸操作。 首先,我们从球体...

    opengles绘制球体增加光照效果

    "opengles绘制球体增加光照效果"这个主题旨在讨论如何在OpenGL ES环境下为3D球体添加真实的光照效果,使渲染出的模型更具有立体感和生动性。 光照模型在OpenGL ES中主要通过两种方式实现:固定管线(Fixed Pipeline...

    Android Studio中利用OPenGL ES绘制一个三棱锥,并对三棱锥进行纹理贴图

    在Android开发中,OpenGL ES(OpenGL for Embedded Systems)是一个广泛使用的图形库,用于在移动设备上绘制复杂的2D和3D图形。本教程将详细讲解如何在Android Studio中利用OpenGL ES绘制一个三棱锥,并对其表面进行...

    android+ndk+opengles1.0点线抗锯齿

    通过以上方法,你可以在Android NDK环境下,利用OpenGL ES 1.0实现点和线的抗锯齿效果,从而提升图形界面的视觉体验。在yuxm这个文件中,可能包含了具体的代码示例或者资源,你可以进一步研究以加深理解。

    Android OpenGL es 教程

    OpenGL ES 是一种在嵌入式设备上广泛使用的图形库,特别是在Android系统中,它用于创建高性能的2D和3D图形。本教程旨在帮助开发者掌握Android平台上的OpenGL ES编程技术,实现复杂的视觉效果。 首先,我们要理解...

    OpenGLES demo - 7. Alpha Blend

    OpenGL ES(Open Graphics Library for Embedded Systems)是OpenGL的嵌入式版本,主要为移动设备如智能手机、平板电脑等提供3D图形渲染能力。在iOS平台上,OpenGL ES是开发者进行图形编程的重要工具。本文将深入...

Global site tag (gtag.js) - Google Analytics