如何分析OpenGL ES中的响应触屏事件
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何分析OpenGL ES中的响应触屏事件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。像旋转三角形那样,让对象根据预设的
千家信息网最后更新 2026年11月03日如何分析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安全错误
数据库的锁怎样保障安全
金诺互联网科技
互联网 科技
有马互联网科技
致骋互联网科技
奇酷互联网络科技
浩特互联网科技
赫美联合互联网科技
互联网金融监管科技
太原新华互联网科技学校怎么样
北京大学互联网科技怎么样
顶级互联网科技成果有哪些
互联网科技革命什么开始
佛山市拉法互联网科技有限公司
四川互联网展示科技馆设计
互联网风格科技公司名称
广州智享互联网科技
互联网科技对化妆品行业
恒生互联网科技趋势
东风日产互联网科技公司叫什么
高科技和互联网的现代国家
善班互联网科技
互联网科技有限公司 翻译
海南购全球互联网科技
海南科技产业互联网平台
国大互联网教育科技有限公司薪资
中天科技中国工业互联网
扫呗互联网科技有限公司
互联网科技手机排行榜
互联网时代高科技布局
小牛互联网科技有限公司地址