iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android编程之OpenGL绘图技巧总结
  • 693
分享到

Android编程之OpenGL绘图技巧总结

技巧openglAndroid 2022-06-06 09:06:53 693人浏览 泡泡鱼
摘要

本文实例讲述了Android编程之OpenGL绘图技巧。分享给大家供大家参考,具体如下: 很久不用OpenGL ES绘图,怕自己忘记了,于是重新复习一遍,顺便原理性的东西总结如

本文实例讲述了Android编程之OpenGL绘图技巧。分享给大家供大家参考,具体如下:

很久不用OpenGL ES绘图,怕自己忘记了,于是重新复习一遍,顺便原理性的东西总结如下:

1. Android 3D坐标系统

如图:

Android的三维坐标系统中:

坐标原点位于中央,
X轴从左向右延伸,原点左边的值为负数,右边为正数;
Y轴从下向上延伸,原点下边的值为负数,上边为正数;
Z轴屏幕里面向外面延伸,屏幕里面为负数,外面为正数。

2. 开发工具(OpenGL和OpenGL ES)介绍
OpenGL:Open Graphics Library,开放的图形库接口,跨编程语言,跨平台的编程接口的规范。适用于图新工作站,个人PC上。
OpenGL ES:OpenGL for Embedded System,OpenGL的一个子集,在OpenGL的基础上,剔除了glBegin/glEnd,四边形,多边形等许多非绝对必要的特性。适用于小型设备多种嵌入式系统。
 
3. 使用OpenGL ES绘制图形原理

(1),OpenGL Es的画笔gl10在绘制图形的时候有两种模式:

① GL10.GL_TRIANGLES:  绘制三角形
② GL10.GL_TRIANGLE_STRIP:  用多个三角形来绘制多边形
也就是说,OpenGL Es只能绘制三角形组成的3D图形。
 
(2),绘制2D图形时,gl10绘制图形的方法glDrawArrays(int mode,int first,int count);
当第一个参数为上面的第二个模式的时候,代表系统会用多个三角形来绘制多边形,从第first个顶点开始,每三个顶点绘制一个三角形。例如我们一开始给出的点数据源中包含点(0,1,2,3)四个点,我们的绘制方法为glDrawArrays(GL10.GL_TRIANGLE_STRIP,0,4),代表我们将绘制两个三角形,分别由0,1,2三个顶点组成的三角形,和1,2,3三个顶点组成的三角形。所绘制的图形如下图:

所以,如果当我们给出的源数据的位置变了,则图形也相应的发生了变化,例如我们一开是给出的点数据源包含点(0,1,2,3)四个点,其他的我们跟上面的一样,只是将点的位置发生了变化,所绘制的图形如下:

(3),绘制3D图形,绘制3D图形跟绘制2D图形的步骤基本相似,区别只是绘制3D图形不仅需要定义各顶点位置的坐标,还需要定义3D图形的各个三角形由哪些顶点组成。
跟2D一样,gl绘制3D的方法:glDrawElements(int mode,int count,int type,Buffer indices)。试想想,当我们把绘制2D图形的点不设在同一个平面上,这样图形不就是成了3D图形了,3D图形的绘制,还必须需要我们自己给出绘制面的点的组合的数据源,也就是必须给出有几个面,每个面是由那几个点组成。
 
4. Android中使用OpenGL ES步骤

(1),创建GLSurfaceView组件,使用Activity来显示GLSurfaceView组件
(2),为GLSurfaceView组件创建GLSurfaceView.Renderer实例,实现GLSurfaceView.Renderer类时需要实现该接口里德三个方法。
   a、abstract void onDrawFrame(GL10 gl);
   b、abstract void onSurfaceChanged(GL10 gl,int width,int height);
   c、abstract void OnSurfaceCreated(GL10 gl,EGLConfig config);
(3),调用GLSurfaceView组件的setRenderer()方法制定Renderer对象,该Renderer对象将会完成GLSurfaceView里3D图形的绘制。
 
 
5. 三维坐标系统与二维坐标系统的不同

二维坐标系统上的坐标值通常就直接使用系统的像素数量
三位坐标系统的坐标值则取决于glFrustumf()方法的设置.
此方法glFrustumf(float left,float right,float bottom,float top,float zNear,float zFar)

该方法用于设置透视投影的空间大小,前两个参数用于设置X轴上的最小坐标值和最大坐标值,中间两个参数用于设置Y轴上的最小坐标值和最大坐标值,后面两个参数用于设置Z轴上最小坐标值和最大坐标值。

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:Android开发之OpenGL绘制2D图形的方法分析Android OpenGLES2.0等腰直角三角形和彩色的三角形(三)了解Android OpenGLES2.0(一)Android OpenGLES2.0绘制三角形(二)Android基于OpenGL在GLSurfaceView上绘制三角形及使用投影和相机视图方法示例Android基于OpenGL的GLSurfaceView创建一个Activity实现方法Android开发 OpenGL ES绘制3D 图形实例详解android使用OPENGL ES绘制圆柱体


--结束END--

本文标题: Android编程之OpenGL绘图技巧总结

本文链接: https://www.lsjlt.com/news/26305.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 浅谈Java编程之if-else的优化技巧总结
    一、使用策略枚举来优化if-else 看到网上蛮多人推荐使用策略模式来优化if-else,但我总觉得,搞一堆策略类来优化大批量if-else,虽然想法很好,但无意之中很可能又会创造出...
    99+
    2024-04-02
  • Python matplotlib实用绘图技巧汇总
    前言 在日常的业务数据分析 ,可视化是非常重要的步骤。这里总结了matplotlib常用绘图技巧,希望可以帮助大家更加更加高效的、美观的显示图表。作者:北山啦 Matplotli...
    99+
    2024-04-02
  • PythonOpenCV学习之图形绘制总结
    目录背景一、画线二、画矩形三、画圆四、画多边形五、画文本六、鼠标绘制总结背景 使用OpenCV进行图形绘制是一种必备的技能,在图像的任务中,不管是图像检测还是图像识别,我们都需要通过...
    99+
    2024-04-02
  • Go语言高效编程的3个技巧总结
    目录不要使用Logrus不要使用encoding/json尽可能不要在goroutine中使用闭包总结不要使用Logrus 这其实和泛型有关。因为Go语言是一门强类型的静态语言,所以...
    99+
    2023-01-03
    Go语言编程 go 语言高级编程 go语言高效编程
  • 提升编程能力的C语言技巧总结
    目录一、函数指针1.概念2.如何用函数指针调用函数3.函数指针作为某个函数的参数4.函数指针作为函数返回类型5.函数指针数组6.函数指针总结二、回调函数1.什么是回调函数2.为什么要...
    99+
    2022-12-08
    C语言 技巧
  • Android中Glide库的使用小技巧总结
    简介在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。https://githu...
    99+
    2023-05-30
    android glide库 使用技巧
  • Android中常见的图形绘制方式总结
    目录图形绘制概述 View + Canvas SurfaceView + Canvas TextureView + Canvas SurfaceView + OpenGL ES GL...
    99+
    2024-04-02
  • Java编程技巧:if-else优化实践总结归纳
    目录一、使用策略枚举来优化if-else二、使用三目运算符来优化if-else1、根据if-else条件来判断赋值的,如:2、利用if-else条件来判断调用方法,如:三、使用Str...
    99+
    2024-04-02
  • JavaScript代码优雅,简洁的编写技巧总结
    1. 强类型检查 用===代替 == // 如果处理不当,它会极大地影响程序逻辑。这就像,你想向左走,但由于某种原因,你向右走 0 == false // true 0 === fa...
    99+
    2022-11-13
    JavaScript代码编写技巧 编写优雅 简洁的JavaScript代码 优雅的JavaScript代码
  • java编程之递归算法总结
    1.何为递归个人理解就是自己调用自己,直到满足一个条件结束自己调用自己的过程,这个就是递归。举一个通俗的点的例子:假设你在一个电影院,你想知道自己坐在哪一排,但是前面人很多,你懒得去数了,于是你问前一排的人「你坐在哪一排?」,这样前面的人 ...
    99+
    2023-05-30
    java 递归算法 ava
  • Android Canvas和Bitmap结合绘图详解流程
    目录Rect/RectFMatrixCanvasBitmapRect/RectF 存储四个值的矩形类:左侧、顶部、右侧和底部。可用于直接在画布上绘制或仅用于存储要绘制的对象的大小。R...
    99+
    2024-04-02
  • Python基础之元编程知识总结
    目录一、前言二、ImportTime vs RunTime三、元类四、装饰器五、对数据的抽象–描述符六、控制子类的创建——代替元类的方法一、前言 首先说,Python中一切皆对象,老...
    99+
    2024-04-02
  • C++图形编程最佳实践总结
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • 混合语言编程—C#使用原生的Directx和OpenGL绘图的方法
    由于项目需要做一些图形展示,所以就想到了使用Directx和OpenGL来绘图,但项目准备使用C#来开发(大家比较熟悉C#),在网上看了相关的资料,有一些第三方的控件可用,试用了下,...
    99+
    2022-11-15
    C# Directx OpenGL
  • python绘制子图技巧之plt.subplot、plt.subplots及坐标轴修改
    目录前言plt.subplotplt.subplots坐标轴修改总结前言 偶然发现python(matplotlib)中绘制子图有两种方法,一种是plt.subplot,另一种是pl...
    99+
    2024-04-02
  • Android开发组件flutter的20个常用技巧示例总结
    目录 1.map遍历快速实现边距,文字自适应改变大小2.使用SafeArea 添加边距3.布局思路4.获取当前屏幕的大小5.文本溢出显示省略号6.一个圆角带搜索icon的搜...
    99+
    2024-04-02
  • C++图形编程优化技巧解疑
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-15
  • Android Canvas和Bitmap的结合绘图流程是什么
    这篇文章主要介绍“Android Canvas和Bitmap的结合绘图流程是什么”,在日常操作中,相信很多人在Android Canvas和Bitmap的结合绘图流程是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-06-25
  • 总结4种提高编程技能的方式
    本篇内容介绍了“总结4种提高编程技能的方式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 重构现有工具...
    99+
    2024-04-02
  • Golang编程之道:高效实践与技巧
    Golang编程之道:高效实践与技巧 Golang,又称Go语言,是由Google开发的一种静态强类型、编译型、并发安全的编程语言。自从发布以来,Golang在云计算、网络编程、大数据...
    99+
    2024-03-02
    技巧 实践 golang go语言 网络编程
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作