绘制2D图形

文章目录

  • 绘制2D图形
    • 1、OpenGL ES在Android中涉及的关键类
      • 1.1、GLSurfaceView
      • 1.2、GLSurfaceView.Renderer 接口
      • 1.3、 GL api 调用

1、OpenGL ES在Android中涉及的关键类

Android框架中有两个基础类,可让我们使用OpenGL ES API创建和操作图形:GLSurfaceView和 GLSurfaceView.Renderer。

1.1、GLSurfaceView

GLSurfaceView从Android 1.5(API level 3)开始加入,继承自SurfaceView,实现了SurfaceHolder.Callback2接口,拥有SurfaceView的全部特性,也有view所有的功能和属性,特别是处理事件的能力,它主要是在SurfaceView的基础上它加入了EGL的管理,并自带了一个GLThread绘制线程(EGLContext创建GL环境所在线程即为GL线程),绘制的工作直接通过OpenGL在绘制线程进行,不会阻塞主线程,绘制的结果输出到SurfaceView所提供的Surface上,这使得GLSurfaceView也拥有了OpenGL ES所提供的图形处理能力。

1.2、GLSurfaceView.Renderer 接口

GLSurfaceView.Renderer 接口定义了使用 OpenGL 绘图时所需的方法。该接口通过 GLSurfaceView.setRenderer() 与 GLSurfaceView 关联在一起

GLSurfaceView.Renderer 定义了一个统一图形绘制的接口,它定义了如下三个接口函数:

⭐️ onSurfaceCreated(GL10 gl, EGLConfig config):当创建 GLSurfaceView 对象后,该方法被系统调用一次。通常在该方法中设置 OpenGL 环境的相关参数,初始化 OpenGL 图形对象等,执行一些无须改变的初始化操作。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

⭐️ onDrawFrame(GL10 gl):GLSurfaceView 对象每一次重绘时系统都会调用该方法。该方法应该执行具体的绘图工作。

⭐️ onSurfaceChanged(GL10 gl, int width, int height):当 GLSurfaceView 对象的几何外形改变时,包括 GLSurfaceView 的尺寸发生改变、设备屏幕的方向发生改变等情况,该方法被系统调用。

1.3、 GL api 调用

GL10就是OpenGL ES的绘图接口,但实际上也是GL11的实例,可通过(gl Instansof GL11)判断它是否为GL11接口的实例。

⭐️ glEnable(int cap)启用服务器端GL功能。glEnable方法和glDisable方法可以启用和禁止各种功能,各种功能(除了GL_DITHER和GL_MULTISAMPLE)的初始值为GL_FALSE。

⭐️**glDisable(int cap):**禁用服务器端GL功能。例如,要关闭抗抖动功能,可以使用gl.glDisable(GL10.GL_DITHER);

例如:

  • GL_ALPHA_TEST 如果启用,将进行alpha 测试

  • GL_DEPTH_TEST 如果启用,将进行深度测试;就是让OpenGL ES负责跟踪每个物体在Z轴上的深度,这样就可避免后面的物体遮挡前面的物体。

  • GL_BLEND 如果启用,将引入的值与颜色缓冲区中的值混合

⭐️**glHint (int target, int mode):**该方法用于对OpenGL ES某方法进行修正。

⭐️ glClearColor (float red, float green, float blue, float alpha):用于指定清除屏幕时使用的颜色,4个参数分别用于设置红、绿、蓝和透明度的值,值的范围是0.0f~1.0f。例如设置gl.glClearColor(0 , 0 , 0 , 0):就是用黑色“清屏”。

⭐️ **glShadeMode(int mode):**该方法用于设置OpenGL ES的着色。

⭐️glViewport(int x , int y , int width , int height):设置3D视窗的位置与大小。其中前两个参数指定该视窗的位置,后两个参数指定该视窗的宽、高。

⭐️ glMatrixMode (int mode)

OpenGL与3D开发-绘制2D图形相关推荐

  1. OpenGL与3D开发-绘制3D图形

    绘制3D图形 文章目录 绘制3D图形 1.立方体 2.圆形 3.球形 3.1.球面顶点坐标计算 使用OpenGL ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的顶点 ...

  2. (转)一个用D3D绘制2D图形的例子

    一个用D3D绘制2D图形的例子 思路如下: (1)函数Do_Init初始化D3D,D3D设备,顶点缓冲,纹理:主要调用这几个函数:         Direct3DCreate9,GetAdapter ...

  3. 使用Two.js绘制2D图形的初学者指南

    Two.js一个API,可轻松使用代码创建2D形状. 继续学习,您将学习如何从JavaScript创建形状和设置动画效果. Two.js与渲染器无关,因此您可以依靠相同的API使用Canvas,SVG ...

  4. java opengl es_Java-Android-使用openGL ES绘制3D然后绘制2D

    我找到了解决方案,但我忘了发布了:)对不起 package at.bartinger.opengl; import javax.microedition.khronos.egl.EGLConfig; ...

  5. OpenGL利用橡皮筋技术绘制简单图形(直线、圆、矩形、三角形)

    总结出以下经验: 想清空屏幕时,要用双缓冲模式,因为单缓冲模式清空时没反应,只会在下一次绘制时清空原来的图形.双缓冲模式可以立即清空屏幕. glutMotionFunc() 函数和 glutPassi ...

  6. Android开发笔记(一百五十三)OpenGL绘制三维图形的流程

    从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...

  7. android绘制过程3d图形,Android开发之OpenGL绘制三维图形的流程

    从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...

  8. Win32 OpenGL编程(4) 2D图形基础(颜色及坐标体系进阶知识)

    Win32 OpenGL 编程 (4) 2D 图形基础(颜色及坐标体系进阶知识) write by 九天雁翎 (JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 ...

  9. D3D绘制2D图像例子

    2014/09/25 (转载自:http://blog.csdn.net/pizi0475/article/details/6268240) 原文出处: http://www.cppblog.com/ ...

最新文章

  1. Java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)
  2. 阿里云API网关(14)流控策略
  3. 傲娇Android二三事之操蛋的开发日记(第一回)
  4. openresty+consul动态配置更新(服务变更发现)
  5. 翻译:A DSL in 5 Languages(五种语言的DSL)
  6. 毕业典礼留学生代表发言:中国是我可亲可敬可爱的第二故乡,我已修炼出一颗中国心!...
  7. 95-30-060-java.util-HashSet
  8. 使用 matlab 数字图像处理(八)—— 画圆
  9. 封装Cell(-去掉TableView那些碍眼的分割线)
  10. ios 身份证照片识别信息
  11. 【Kubernetes 系列】一文学会Kubernetes Service安全的暴露应用
  12. PCIe扫盲——PCIe卡Spec(CEM)导读
  13. 最新web/java/jsp实现发送手机短信验证码和邮箱验证码的注册登录功能(详细)
  14. 小米路由器LuCI Web服务
  15. 标签体系下的用户画像建设小指南
  16. Android调试工具ADB
  17. 02 数字图像技术——颜色空间转换与颜色空间分割实验结果与分析——python
  18. 计算机网络论文2020年8000字,2020年计算机网络技术专业论文提纲模板.doc
  19. Linux查看CUDA版本以及nvcc: command not found
  20. Windows中Nginx下载、安装、配置

热门文章

  1. WriteProcessMemory
  2. 数字逻辑·数制转换、编码方法
  3. 企业为什么需要UI快速开发框架
  4. BUCK电路全部外围参数计算公式
  5. 蓝牙(三)GATT协议
  6. vnc linux新用户,realvnc linux,realvnc linux配置的8个步骤
  7. AcceptEx获取远程ip和端口
  8. NOIp2011数字反转
  9. arm linux kdump,linux系统奔溃之vmcore:kdump 的亲密战友 crash
  10. 解决虚拟机黑屏的问题,你只需要一行代码(某大神教的~记录记录)