位置: 编程技术 - 正文

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)

  • 汽车购置税怎么算2023
  • 交易性金融资产和其他权益工具投资的区别
  • 电子汇票提示付款撤销
  • 利息资本化计入什么现金流量科目
  • 工程行业存货哪些科目组成
  • 建筑业企业生产经营情况表
  • 销售费用计入产品生产成本吗
  • 预提费用所得税前扣除
  • 非货币性资产交换固定资产清理
  • 销售土地如何交增值税
  • 土地使用税怎么征收标准
  • 员工在社保局报备流程
  • 延迟付款确认是怎么回事
  • 附追索权的应收债权出售的会计处理
  • 私立学校的学费是教育局规定的吗
  • 递延收益摊销包含哪些
  • 增值税减免明细表怎么填
  • 没有汇算清缴可以弥补以前年度亏损吗
  • 已经入账的发票能把原始票据退回吗
  • 出口退税注销备注怎么填
  • 房屋租赁交税能补交吗
  • 促销费属于哪个税目
  • 机票上exempt yqcny是什么意思?
  • 三证合一的税号变了,法人怎么重新绑定企业
  • 国税2016年第53号公告解读
  • 支票只能同城吗
  • 物业营改增什么时候开始
  • 股权并购和资产的关系
  • 资产负债表在建工程怎么填列
  • 核销以前年度的其他应付款
  • 企业内部领用产品会计处理
  • 税务自查补税后还有风险吗
  • win10如何设置快捷键截图
  • 鸿蒙3.0手机适配名单荣耀
  • php apc
  • php获取远程文件扩展名
  • 支付宝花呗服务升级有什么用
  • win11如何调整鼠标中键
  • 银行承兑汇票的会计分录
  • 超过认证期的发票怎么办
  • 柬埔寨 吴哥窟
  • Yii2实现ajax上传图片插件用法
  • sql server2016使用
  • vue中的路由守卫有哪些
  • 库存商品暂估入库金额如何确定
  • 非成品油发票为什么不能抵扣
  • 帝国cms如何使用
  • 织梦配置文件
  • 固定资产是怎么管理的
  • 水利建设专项基金土增税清算能扣除吗
  • 电子承兑背书一般多久到账
  • 固定资产赠送后怎么做凭证
  • 代收会计分录
  • 高速公路通行费抵扣税率
  • 将税后利润首先用于增加投资
  • 公司既没有收入怎么办
  • 企业计提福利费按多少提
  • 生产企业原材料占产成品的比例
  • 分公司做账报税
  • sqlserver 查看表
  • centos7怎么关闭端口
  • win7系统打开程序卡住几秒怎么办
  • linux共享
  • SmartExplorer.exe - SmartExplorer进程是什么意思
  • win10系统永久激活软件
  • win10 运行
  • cocos creator 动画制作
  • Unity3D游戏开发引擎
  • javascript教程完整版
  • 被调用的对象已与其客户端断开连接怎么办
  • 自动断开网络共享怎么办
  • python安装pip.whl
  • vr project
  • javascript scrollLeft,scrollWidth,clientWidth,offsetWidth 完全详解
  • javascript 对象的this指向
  • python字符串字符对应个数
  • 12123人工咨询电话
  • 增值税纳税申报操作流程和内容
  • 贵州开票软件怎么下载安装
  • 人社局要求社保补缴
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设