android openGL es图形旋转问题

openGL开发时实现自己的Renderer类重写onDrawFrame(GL10 gl)方法,然后在该方法中调用gl.glRotatef(angle, x, y, z)旋转视窗,我想问的是onDrawFrame这个方法会不断被调用吗?还有那个angle参数是是图形旋转到这个角度还是旋过这个角度?

第1个回答  2012-06-19
在android中,要实现动画效果,要么通过循环调用canvas.draw系统方法,要么通过调用opengl es中的GLSurfaceView.Renderer实现方法onDrawFrame方法。 这个方法大体的原理是开起一个线程,在此线程内不断的调用onDrawFrame,实现效果。
其中gl.glRotatef(angle, x, y, z)的angle是旋过多少度。追问

onDrawFrame似乎是不断被调用的这个我和你的想法一样,但是那个angle我还是觉得是转到这个角度,因为gl.glRotatef也是在onDrawFrame()方法里面的,既然onDrawFrame()是不断被调用的那么这个angle不需要改变它每次也要转这个角度,而事实情况是要每次在onDrawFrame()方法内部不断改变angle的值才能实现旋转,否则图形是不动的。

第2个回答  2012-08-28
因为每次绘制时都会调glLoadIdentity();把当前矩阵设置为单位矩阵,因此旋转不会被累加。

android openGL es图形旋转问题
在android中,要实现动画效果,要么通过循环调用canvas.draw系统方法,要么通过调用opengl es中的GLSurfaceView.Renderer实现方法onDrawFrame方法。 这个方法大体的原理是开起一个线程,在此线程内不断的调用onDrawFrame,实现效果。其中gl.glRotatef(angle, x, y, z)的angle是旋过多少度。

android Opengl旋转问题
在android中,要实现动画效果,要么通过循环调用canvas.draw系统方法,要么通过调用opengl es中的GLSurfaceView.Renderer实现方法onDrawFrame方法。 这个方法大体的原理是开起一个线程,在此线程内不断的调用onDrawFrame,实现效果。其中gl.glRotatef(angle, x, y, z)的angle是旋过多少度。请采纳。

【OpenGL ES】基于ValueAnimator的旋转、平移、缩放动效
如果您对OpenGL ES不太熟悉,建议回顾相关知识。完整代码资源请参考→基于ValueAnimator的旋转、平移、缩放动效。项目结构如下:1. MainActivity.java 2. activity_main.xml 3. MyAnimation.java 注意:创建的mRootView的type为TYPE_APPLICATION_OVERLAY,需要在AndroidManifest.xml中相应标签下申请权限,并在...

OpenGL ES for Android 相机预览适配不同分辨率的手机
为解决分辨率兼容性,我们借鉴OpenGL ES for Android的视频缩放、旋转、平移技术,应用于相机预览。此方法主要通过视频适配后的效果为基础,即让视频画面完整显示,虽会形成黑色区域,但对于相机而言,目标是防止拉伸同时不出现黑边,进而通过裁剪纹理达到适配目的。若假设相机预览尺寸为3:4(640x480),而渲...

移动应用中使用OpenGL生成转场特效
视频的转场效果离不开图形的处理,移动设备在处理3D图形相关的计算时一般都会选择使用GPU。相较于CPU,GPU在图像动画处理时具有更高效的性能。移动设备以android为例,GPU处理提供了两套不同的API,分别是Vulkan和OpenGL ES。其中VulKan只支持 Android 7.0 以上的设备,OpenGL ES 则支持所有的 Android ...

如何使用Android中的OpenGL ES媒体效果
1.一款支持Android开发的IDE,如果你没有的话,可以在Android Developer website下载最新版本的Android studio。 2.一款运行Android4.0之上Android手机,并且GPU支持OpenGL ES2.0 3.对OpenGL的基本知识了解设置OpenGL ES环境创建GLSurfaceView为了显示OpenGL的图形,你需要使用GLSurfaceView类,就像其他任何的View子类意义,你可以将它...

关于OPENGL ES的反走样问题
ES里面是没有glEnable(GL_LINE_SMOOTH); glLineWidth();这两个API的,只有glHint 用这一句试下吧:glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);不过我也不敢肯定,因为NEHE的源码我用这几句话都没消掉锯齿 最近在研究ES,可以加下QQ一起讨论下,因为很多东西我也不懂 ...

如何在Android上使用OpenGL ES 2.0绘制点
1)首先调用 GL20.glEnable(GL_VERTEX_PROGRAM_POINT_SIZE); 这样在Shader中可以访问glPointSize;2)然后类似准备每个顶点色彩那样准备顶点的大小的数值,三角形是三个顶点,就准备3个float。把顶点数据像色彩数据那样,绑定到VOB,再绑定到Shader的参数中。基本上就是照准备色彩那样准备顶点大小数据,不同...

求助:android opengl es 全屏抗钜齿
http:\/\/code.google.com\/p\/gdc2011-android-opengl\/ 这个例子里有es的多重采样,你可以参考一下。另外,不知你所指的锯齿具体是个什么现象,一些不当的gl使用方式可能也会让贴图等出现不和谐的锯齿感,比如材质过滤选项等等,一般情况下都不会去开抗锯齿,毕竟手机现在的硬件资源还很有限,除非你是做...

请问高手们 Android程序用openGL ES2.0编写 请问openGL ES2.0是可以...
\/\/ 检测系统是否支持 OpenGL ES 2.0 final ActivityManager activityManager = (ActivityManager) getSystemService(Context. ACTIVITY_SERVICE);final ConfigurationInfo configurationInfo = activityManager.getDeviceConfigurationInfo();final boolean supportsEs2 = configurationInfo.reqGlEsVersion >= 0x20000...

相似回答