2016-06-26 4 views
0

を回転させて、私は、OpenGLでオブジェクトを持っていると私はは、オブジェクトのOpenGL ESのAndroidで360°

mRenderer.setAngle(mAngle); 

を使用して、それを回転させることができるよ。しかし、これは水平方向にのみ形状を回転させます。シェイプを垂直にも回転できるようにするにはどうすればよいですか?

mRendererは、ここでは、クラスの一番下にある2つの変数を追加KubeRenderer

class KubeRenderer implements GLSurfaceView.Renderer { 
    public interface AnimationCallback { 
     void animate(); 
    } 

    public KubeRenderer(GLWorld world, AnimationCallback callback) { 
     mWorld = world; 
     mCallback = callback; 
    } 

    public void onDrawFrame(GL10 gl) { 
     if (mCallback != null) { 
      mCallback.animate(); 
     } 
     gl.glClearColor(0.5f,0.5f,0.5f,1); 
     gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); 
     gl.glMatrixMode(GL10.GL_MODELVIEW); 
     gl.glLoadIdentity(); 
     gl.glTranslatef(0, 0, -3.0f); 
     gl.glScalef(0.5f, 0.5f, 0.5f); 
     gl.glRotatef(mAngle, 0, 1, 0); 
     gl.glRotatef(mAngle*0.25f, 1, 0, 0); 

     gl.glColor4f(0.7f, 0.7f, 0.7f, 1.0f); 
     gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); 
     gl.glEnableClientState(GL10.GL_COLOR_ARRAY); 
     gl.glEnable(GL10.GL_CULL_FACE); 
     gl.glShadeModel(GL10.GL_SMOOTH); 
     gl.glEnable(GL10.GL_DEPTH_TEST); 

     mWorld.draw(gl); 
    } 

    public void onSurfaceChanged(GL10 gl, int width, int height) { 
     gl.glViewport(0, 0, width, height); 
     float ratio = (float)width/height; 
     gl.glMatrixMode(GL10.GL_PROJECTION); 
     gl.glLoadIdentity(); 
     gl.glFrustumf(-ratio, ratio, -1, 1, 2, 12); 
     gl.glDisable(GL10.GL_DITHER); 
     gl.glActiveTexture(GL10.GL_TEXTURE0); 
    } 

    public void onSurfaceCreated(GL10 gl, EGLConfig config) { 
    } 

    public void setAngle(float angle) { 
     mAngle = angle; 
    } 

    public float getAngle() { 
     return mAngle; 
    } 

    private GLWorld mWorld; 
    private AnimationCallback mCallback; 
    private float mAngle; 
} 
+0

'mRenderer'のクラスとは何ですか? – kennytm

+0

がコードを追加しました。 –

答えて

0

のインスタンスである: プライベートフロートマングルを。

ドローで次の2行を変更してください。 gl.glRotatef(mAngle、0、1、0); gl.glRotatef(mAngle * 0.25f、1,0,0);各変数 (https://www.opengl.org/sdk/docs/man2/xhtml/glRotate.xml

によって異なる軸を中心に回転して、必要がこれらの3つの変数(SetAngleとGetAngle)のためのセッターとゲッターの機能を変更するラインに

関連する問題