【问题标题】:Rotate GLSurfaceView旋转 GLSurfaceView
【发布时间】:2013-11-14 03:46:17
【问题描述】:

我在 GLSurfaceView 上显示 2D 图像并希望以特定角度旋转它(即 180 ,75,360...)

我在触摸事件中编写了以下代码。(这里 GPUImageView 扩展了 GLSurfaceView )并且我从处理两个手指旋转手势的 Rotate Gesture Detector 类中获得了变量 rotationDegree 的值。下面的代码旋转 GLSufaceview 但 GLSurfaceView 中显示的内容/iamge 保持不变(不在其中旋转)。 android 有示例,但它们用于 3D,而不是随度数旋转。

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        rotationDetector.onTouchEvent(event);
        /* Rotate View Here */
        GPUImageView.this.setRotation(rotationDegree);
        requestRender();
        return true;
    }

我有我的自定义旋转检测器类,它调度与两个手指旋转相关的事件

    private class RotateListener extends RotateGestureDetector.SimpleOnRotateGestureListener
    {
        @Override
        public boolean onRotate(RotateGestureDetector detector)
        {
            rotationDegree -= detector.getRotationDegreesDelta();
            return true;
        }
    }

【问题讨论】:

  • 实际设置rotationDegree的代码在哪里?在您为此特定功能显示的代码中,它是恒定的。
  • 我添加了如何修改 rotationDegree 变量的代码。 rotationDegree 是变量,当我的自定义 RotationGestureDetecter 类检测到两个手指旋转完成时会修改它。正如我所说的旋转工作正常,但它只会旋转外部视图内部内容保持在同一位置。

标签: android opengl-es rotation glsurfaceview


【解决方案1】:

您还可以通过 ModelMatrix 旋转表面视图..

onDrawFrame()
{
Matrix.tramslateM(yourModelMatrix,offsetValue,translationInx,translationInY,translationInZ);
Matrix.rotateM(yourModelMatrix,offsetValue,andgle in degrees,inDirectionX,inDirectioY,inDirectionZ);
}

【讨论】:

  • 您能否用更多代码解释它,因为我不是来自 OpenGL 背景需要更多代码如何使用 modelMatrix 和操作您在此处显示的代码。
  • 在 GLSurfaceView 代码中,如果你有 Renderer 类,那么你必须重写三个方法,即 onSurfaecChanged()、onSurfaceCreated() 和 onDrawFrame() 以及一些参数。我已经向你展示了旋转的代码GL Surface View 屏幕和此代码中的翻译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-03
  • 2016-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多