如何分析OpenGL ES中的响应触屏事件
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,这篇文章将为大家详细讲解有关如何分析OpenGL ES中的响应触屏事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。像旋转三角形那样,让对象根据预设的
千家信息网最后更新 2024年11月17日如何分析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安全错误
数据库的锁怎样保障安全
社交软件开发的服务态度
梦幻西游服务器转服
kad和全局服务器搜不到资源
蜀山区专业性网络技术咨询
怎样用服务器搭建多ip
计算机网络技术习题册答案
怎么搜索数据库的信息
网络安全监察系统性能
软件开发试用期工作
分析网络技术的普及和发展
数据库影响行数怎么获取
数据库收费标准
北京c语言软件开发费用
山西常规软件开发创新服务
软件开发验收指南
松江区信息化软件开发供应商
数据库管理的变迁
文件服务器与共享文件夹区别
数据库概论实验报告四
图像智能分析软件开发
2021军营网络安全主题
阿里云上数据库安全吗
云鼎软件开发
计算机网络技术都学什么专业
关于部队网络安全的话语
自动驾驶标定软件开发费
郑州三鼎网络技术服务有限公司
服务器如何自动生成图片
如何收看节目和网络安全
冒险岛m服务器订阅链接