如何分析OpenGL ES中的响应触屏事件
发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,这篇文章将为大家详细讲解有关如何分析OpenGL ES中的响应触屏事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。像旋转三角形那样,让对象根据预设的
千家信息网最后更新 2025年01月24日如何分析OpenGL ES中的响应触屏事件
这篇文章将为大家详细讲解有关如何分析OpenGL ES中的响应触屏事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
像旋转三角形那样,让对象根据预设的程序来移动,以便有助于获取人们的关注,但是如 果想要让你的OpenGL ES图形跟用户交互,应该怎样做呢?要让你的OpenGL ES应用程序能够触碰交互的关键是扩展你的GLSurfaceView实现,重写它的onTouchEvent()方法来监听触碰事件。
小编将介绍如何监听触碰事件,让用户可以旋转OpenGL ES对象。
设置触碰监听器
为了让你的OpenGL ES应用程序响应触碰事件,你必须在你GLSurfaceView类中实现onTouchEvent()事件。以下实现的示例显示如何监听MotionEvent.ACTION_MOVE事件,并把它们转换成图形旋转的角度。
@Override public boolean onTouchEvent(MotionEvent e) { // MotionEvent reportsinput details from the touch screen // and other inputcontrols. In this case, you are only // interested in eventswhere 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.mAngle += (dx + dy) * TOUCH_SCALE_FACTOR; // = 180.0f /320 requestRender(); } mPreviousX = x; mPreviousY = y; return true; }
注意,计算旋转的角度之后,这个方法调用了requestRender()方法来告诉渲 染器,到了渲染帧的时候了。上例中所使用的方法是最有效的,只有在有旋转变化时,帧才会被重绘。但是要想只在数据变化的时候,才请求渲染器重绘,就要使用 setRenderMode()方法来设置绘制模式。
publicMyGLSurfaceView(Context context){ ... // Render the view onlywhen there is a change in the drawing data setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); }
暴露旋转的角度
上例代码要求你通过添加一个公共的成员变量,通过渲染器把旋转的角度暴露出来。因为渲染器代码运行在一个独立于主用户界面线程之外的线程中,所以你必须声明一个公共变量,代码如下:
publicclassMyGLRendererimplementsGLSurfaceView.Renderer{ ... public volatile float mAngle;
应用旋转
以下代码完成由触碰输入所产生的旋转:
publicvoidonDrawFrame(GL10 gl){ ... // Create a rotation forthe triangle // long time =SystemClock.uptimeMillis() % 4000L; // float angle = 0.090f *((int) time); Matrix.setRotateM(mRotationMatrix, 0, mAngle, 0, 0, -1.0f); // Combine the rotationmatrix with the projection and camera view Matrix.multiplyMM(mMVPMatrix, 0, mRotationMatrix, 0, mMVPMatrix, 0); // Draw triangle mTriangle.draw(mMVPMatrix); }
关于如何分析OpenGL ES中的响应触屏事件就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
事件
方法
代码
角度
监听
用户
程序
应用
分析
内容
变量
图形
对象
应用程序
文章
时候
更多
知识
篇文章
线程
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库与大数据科学
用友t3会计软件连接不到服务器
为什么刀塔2只能玩日本服务器
软件开发 iso标准
数据库程序设计源代码
工业网络安全答辩
泸州市商务软件开发公司
ip动态 服务器
你最想学的网络安全知识
特斯拉充电503服务器维护
网络安全组网流量分析
韩国服务器大宽带
电脑怎么查服务器地址
ed2k安全服务器
甘肃联想服务器维修维保价格
网络安全责任有哪些
江西宇创网络技术
数据库语句如何修改字段类型
如何获得服务器神装
有关网络安全的主题名称
桌面云是云服务器吗
安装域服务器
网络安全反电诈的体会
武汉烽火通信软件开发加班
我看网络安全作文题目600字
多维数据库建立
你最想学的网络安全知识
和平精英能用哪个服务器
context数据库
贝凡互联网科技 云浮