OpenGL与3D开发-绘制2D图形
绘制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图形相关推荐
- OpenGL与3D开发-绘制3D图形
绘制3D图形 文章目录 绘制3D图形 1.立方体 2.圆形 3.球形 3.1.球面顶点坐标计算 使用OpenGL ES绘制3D图形的方法与绘制2D图形的步骤大致相同,只是绘制3D图形需要定义更多的顶点 ...
- (转)一个用D3D绘制2D图形的例子
一个用D3D绘制2D图形的例子 思路如下: (1)函数Do_Init初始化D3D,D3D设备,顶点缓冲,纹理:主要调用这几个函数: Direct3DCreate9,GetAdapter ...
- 使用Two.js绘制2D图形的初学者指南
Two.js一个API,可轻松使用代码创建2D形状. 继续学习,您将学习如何从JavaScript创建形状和设置动画效果. Two.js与渲染器无关,因此您可以依靠相同的API使用Canvas,SVG ...
- java opengl es_Java-Android-使用openGL ES绘制3D然后绘制2D
我找到了解决方案,但我忘了发布了:)对不起 package at.bartinger.opengl; import javax.microedition.khronos.egl.EGLConfig; ...
- OpenGL利用橡皮筋技术绘制简单图形(直线、圆、矩形、三角形)
总结出以下经验: 想清空屏幕时,要用双缓冲模式,因为单缓冲模式清空时没反应,只会在下一次绘制时清空原来的图形.双缓冲模式可以立即清空屏幕. glutMotionFunc() 函数和 glutPassi ...
- Android开发笔记(一百五十三)OpenGL绘制三维图形的流程
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...
- android绘制过程3d图形,Android开发之OpenGL绘制三维图形的流程
从这篇文章开始,接下来会连载一系列的OpenGL相关博文,好好探讨如何在Android中进行OpenGL开发. OpenGL的全称是"Open Graphics Library", ...
- Win32 OpenGL编程(4) 2D图形基础(颜色及坐标体系进阶知识)
Win32 OpenGL 编程 (4) 2D 图形基础(颜色及坐标体系进阶知识) write by 九天雁翎 (JTianLing) -- blog.csdn.net/vagrxie 讨论新闻组及文件 ...
- D3D绘制2D图像例子
2014/09/25 (转载自:http://blog.csdn.net/pizi0475/article/details/6268240) 原文出处: http://www.cppblog.com/ ...
最新文章
- Java入门时的一些基本概念的理解(j2ee,j2se,j2me,jdk,sdk,jre,jvm,跨平台)
- 阿里云API网关(14)流控策略
- 傲娇Android二三事之操蛋的开发日记(第一回)
- openresty+consul动态配置更新(服务变更发现)
- 翻译:A DSL in 5 Languages(五种语言的DSL)
- 毕业典礼留学生代表发言:中国是我可亲可敬可爱的第二故乡,我已修炼出一颗中国心!...
- 95-30-060-java.util-HashSet
- 使用 matlab 数字图像处理(八)—— 画圆
- 封装Cell(-去掉TableView那些碍眼的分割线)
- ios 身份证照片识别信息
- 【Kubernetes 系列】一文学会Kubernetes Service安全的暴露应用
- PCIe扫盲——PCIe卡Spec(CEM)导读
- 最新web/java/jsp实现发送手机短信验证码和邮箱验证码的注册登录功能(详细)
- 小米路由器LuCI Web服务
- 标签体系下的用户画像建设小指南
- Android调试工具ADB
- 02 数字图像技术——颜色空间转换与颜色空间分割实验结果与分析——python
- 计算机网络论文2020年8000字,2020年计算机网络技术专业论文提纲模板.doc
- Linux查看CUDA版本以及nvcc: command not found
- Windows中Nginx下载、安装、配置