位置: 编程技术 - 正文

Android OpenGL ES绘图教程之六 :响应触摸事件(opengl es api)

编辑:rootadmin
使对象根据预设的程序进行运动,比如旋转三角形,可以吸引人的注意力。但是如果你想让用户同你的OpenGL ES图形进行交互会怎么样呢?使你的OpenGL ES应用程序触摸互动的关键是要扩展GLSurfaceView,复写onTouchEvent()方法,来监听touch事件。本教程展示了,如何监听透出事件,让用户旋转一个OpenGL ES对象。1. 设置一个Touch Listener 为了使你的OpenGL ES应用响应touch事件,你必须在GLSurfaceView类中实现OnTouchEvent()方法,下面的例子展示了如何监听 MotionEvent.ACTION_MOVE事件,并把它们转换成图形的旋转角度。private final float TOUCH_SCALE_FACTOR = .0f / ;private float mPreviousX;private float mPreviousY;@Overridepublic boolean onTouchEvent(MotionEvent e) { // MotionEvent reports input details from the touch screen // and other input controls. In this case, you are only // interested in events where the touch position changed. float x = e.getX(); float y = e.getY(); switch (e.getAction()) { case MotionEvent.ACTION_MOVE: float dx = x - mPreviousX; float dy = y - mPreviousY; // reverse direction of rotation above the mid-line if (y > getHeight() / 2) { dx = dx * -1 ; } // reverse direction of rotation to left of the mid-line if (x < getWidth() / 2) { dy = dy * -1 ; } mRenderer.setAngle( mRenderer.getAngle() &#; ((dx &#; dy) * TOUCH_SCALE_FACTOR)); requestRender(); } mPreviousX = x; mPreviousY = y; return true;} 要注意的是,当计算了旋转角度后,这个方法调用了requestRender()方法来告诉renderer需要渲染该帧,在本例中的这种途径是最优效的,因为帧只有在角度更改的时候才会重新绘制。但是,当你设置了渲染模式为RENDERMODE_WHEN_DIRTY的时候才会提高效率,所以确保renderer中该行的代码是没有被注释掉的:public MyGLSurfaceView(Context context) { ... // Render the view only when there is a change in the drawing data setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);}2. public旋转角度 上面的示例代码需要你通过添加public成员来暴露旋转角度参数。因为renderer代码是运行在一个独立于主线程的线程里面,所以你必须声明该参数为volatile:public class MyGLRenderer implements GLSurfaceView.Renderer { ... public volatile float mAngle; public float getAngle() { return mAngle; } public void setAngle(float angle) { mAngle = angle; }}3. 应用角度 为了应用touch输入产生的角度,注释掉产生调度的代码,添加由touch输入产生的mAngle:public void onDrawFrame(GL gl) { ... float[] scratch = new float[]; // Create a rotation for the triangle // long time = SystemClock.uptimeMillis() % L; // float angle = 0.f * ((int) time); Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f); // Combine the rotation matrix with the projection and camera view // Note that the mMVPMatrix factor *must be first* in order // for the matrix multiplication product to be correct. Matrix.multiplyMM(scratch, 0, mMVPMatrix, 0, mRotationMatrix, 0); // Draw triangle mTriangle.draw(scratch);}

推荐整理分享Android OpenGL ES绘图教程之六 :响应触摸事件(opengl es api),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android skia opengl,android skia opengl,android opengl es教程,opengl es api,android view opengl,android view opengl,android opengl es教程,安卓opengl es3.0安装,内容如对您有帮助,希望把文章链接给更多的朋友!

当你完成了上面描述的步骤,执行代码,就可以在屏幕上拖动手指来旋转这个三角形了。

Android OpenGL ES绘图教程之六 :响应触摸事件(opengl es api)

原文地址 :

VS下基于Glut OpenGL显示一些立体图形示例程序 转自:

[置顶] Bezier曲线的动态绘制 #includegl/glut.h#includemath.h#pragmacomment(linker,/subsystem:windows/entry:mainCRTStartup)intSCREEN_HEIGHT=;intNUMPOINTS=0;classPoint{public:floatx,y;voidsetxy(floatx2,floaty2){x=x2;y=y2;}};

glutSwapBuffers函数用法 文章来源:

标签: opengl es api

本文链接地址:https://www.jiuchutong.com/biancheng/369575.html 转载请保留说明!

上一篇:Android OpenGL ES绘图教程之五 :加入运动(android opengles2.0教程)

下一篇:VS2012下基于Glut OpenGL显示一些立体图形示例程序(vs2019怎么用gets)

  • 当月只有进项税额月末怎么办
  • 应交个人所得税在借方是什么意思
  • 电子税务局中在哪看本月开票统计表
  • 当地外包公司是干什么的
  • 母公司吸收合并全资子公司土地增值税
  • 某公司是一家刚成立的大型化妆品生产企业
  • 发票隔月报送可以么?
  • 预付账款转入其他非流动资产
  • 增值税与普通发票的关系
  • 付拍卖佣金入什么科目核算及会计分录怎么做?
  • 出口退税率为0算免税吗
  • 无票收入冲回会计分录
  • 企业的业务招待费多了好还是少了好
  • 免税店汇率是什么意思
  • 一般纳税人进项税会计分录
  • 单位预算支出包括哪些
  • 上年度少计提的税金及附加
  • 简单介绍linux
  • html5 video标签
  • 企业发生待摊费怎么处理
  • 委外加工的加工费的会计处理
  • php利用云片网实现短信验证码功能的示例代码
  • 政策性搬迁补偿收入如何财税处理
  • linux中cut命令详解
  • 付款凭证怎么填写电脑
  • 工程施工与工程结算在资产负债表里
  • 耕地开垦费计入土地成本吗
  • php的工作流程
  • 代理的认定
  • 企业发生的与日常经营活动无直接关系的各项利得
  • laravel创建项目
  • 银行提取现金会查征信吗
  • php框架ci
  • 工程服务费会计怎么做账
  • thinkphp3.x中session方法的用法分析
  • 代理电信业务属于什么行业
  • 2019年4月1日降低城镇职工什么单位缴费比例
  • 视同销售到底如何纳税调整?
  • 租用办公室装修费用会计分录
  • 自收自支是由主管部门拨款吗
  • mongodb too many open files
  • sqlserver2008中有那些设备
  • 发票生活服务费填什么报销内容
  • 小规模纳税人减免增值税会计处理
  • 混合销售的含义
  • 企业残障金缴纳标准
  • 印花税的征税范围口诀
  • 无偿划拨土地需要提折旧吗
  • 投资子公司亏损母公司报表怎么做
  • 企业代扣个人社保最新会计处理
  • 为什么留存收益不考虑筹资费用
  • 支付宝里的收入和支出明细能查多久的?
  • 财务会计与管理会计的区别与联系?谁更棒?
  • linux rpm包怎么安装
  • mysql数据库备份方法
  • WINDOWS系统无法正常启动
  • win8系统c盘占用多大
  • win10预览版选哪个
  • win10 version 1607 累积更新失败卡了怎么办
  • winxp如何将两个分区合并成一个分区
  • speedupmypc.exe - speedupmypc是什么进程
  • ps1是什么文件
  • win10正版授权图标
  • 电脑操作系统win8
  • Win10系统无法启动,如何修复
  • win7自动更新失败怎么删除更新启动
  • 批处理修改文件名称
  • python3 栈
  • perl处理特殊符号
  • js移动端拖拽
  • jquery开发项目
  • jquery的点击事件怎么写
  • Node.js中的事件循环是什么意思
  • android studio环境
  • 莱鸟人集团
  • python的params
  • 注销税务登记需要哪些材料
  • 保险专票可以抵进项税吗
  • 办理授权税务事项有哪些
  • 房屋增值税和土地增值税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设