使用键盘OpenGLES 2旋转 [英] Rotating with keyboard OpenGLES 2

查看:108
本文介绍了使用键盘OpenGLES 2旋转的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好,

再次是关于OpenGLES 2.现在我的脑子里有些讨厌-_-.
如何使用键盘输入旋转画图(三角形和矩形)?如(w,a,s,d)代表(上,下,右,左)等.

在此先感谢

附言:我在OpenGLES 2中发现了一些有趣的东西,OpenGL中似乎不存在的每个命令(例如glTranslate等)都被覆盖为esTranslate,esPerspective等.

Hi there,

It''s about OpenGLES 2 again. Now I got something nasty in my mind -_-.
How to rotate my draw (triangle and rectangle) with keyboard input? Such as, (w,a,s,d) for (up,down,right,left) and so on.

Thanks in advance

Ps : I found something interesting in OpenGLES 2, that every command which seems not exist from OpenGL like glTranslate and so on was being overwritten as esTranslate, esPerspective and so on. Is it obvious?

推荐答案

实现此
...
...
@Override
    public boolean onKeyDown(int keyCode, KeyEvent msg) {
        if (keyCode == KeyEvent.KEYCODE_DPAD_UP) {
            renderer.mY -= 1;
            requestRender();
            return (true);
		}
           
        if (keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
            renderer.mY += 1;
            requestRender();
            return (true);
        }

        if (keyCode == KeyEvent.KEYCODE_DPAD_LEFT) {
            renderer.mX -= 1;
            requestRender();
            return (true);
        }

        if (keyCode == KeyEvent.KEYCODE_DPAD_RIGHT) {
			renderer.mX += 1;
            requestRender();
            return (true);
        }

        return true;
    }

...
...



还有这个



and this

...
...
@Override
public void onDrawFrame(GL10 gl) 
{
    gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);

    enable2d(gl);
	gl.glMatrixMode(GL10.GL_MODELVIEW);
	gl.glLoadIdentity();
	//gl.glTranslatef(0, 0, -3.0f);
	gl.glTranslatef(mX, 0, -3.0f);
	gl.glTranslatef(0, mY, -3.0f);
	gl.glRotatef(mAngleX, 0, 1, 0);
	gl.glRotatef(mAngleY, 1, 0, 0);
	gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
	gl.glEnableClientState(GL10.GL_COLOR_ARRAY);

    drawTriangle(gl, 160.0f, 100.0f, 110.0f, 200.0f, 210.0f, 200.0f, 1.0f, 1.0f, 1.0f);
    drawTriangle(gl, 110.0f, 200.0f, 60.0f, 300.0f, 160.0f, 300.0f, 1.0f, 1.0f, 1.0f);
    drawTriangle(gl, 210.0f, 200.0f, 160.0f, 300.0f, 260.0f, 300.0f, 1.0f, 1.0f, 1.0f);
    disable2d(gl);
}
...
...



有用.应该是可行的!



It works. And should be works!


这篇关于使用键盘OpenGLES 2旋转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆