在android.app.Fragment中使用OpenGL

时间:2013-10-29 19:38:26

标签: c# android opengl-es-2.0 xamarin

对于我的应用程序,我希望将GLSurfaceView添加到我的Fragment Activity中的一个可滑动片段中。我的印象是他们像普通的视图一样工作,导致我尝试以下代码。

public override View OnCreateView(LayoutInflater inflater, 
                                  ViewGroup container, 
                                  Bundle savedInstanceState)
{
    rootView = 
        inflater.Inflate(Resource.Layout.VisualisationFragment, container, false);

    var fragmentLayout = 
        rootView.FindViewById<RelativeLayout>(Resource.Id.fragmentLayout);

    surfaceView = new GLSurfaceView(this.Activity.BaseContext);
    fragmentLayout.AddView(surfaceView);

    return rootView;
}

当我逐步执行代码时,代码编译得很好并且看起来很好,直到返回rootView之后的某个地方,此时我得到一个“强制关闭”警报,没有例外。除了顶部的标题和底部的按钮外,GLSurface视图占据了大部分屏幕。我已经宣布在我的清单中使用OpenGL,是否还有其他任何我缺失的配置?

我的问题:

是否可以在片段里面使用OpenGL 一个FragmentActivity,如果是这样,如何在没有应用程序爆炸的情况下将surfaceView分配给我的rootView?

提前致谢。

1 个答案:

答案 0 :(得分:0)

好的,所以我早些时候开始工作,但收效甚微,因为它太过于迟缓而无法证明有用。

要修复它,渲染器需要WAS,并且需要继承Java.Lang.Object和IRenderer以允许您实现Handler属性。

在每次扫描中销毁和重新创建GlSurfaceView都证明了太多的处理能力,以便在面板之间保持一致的平滑滑动,即使OnSurfaceCreate和OnSurfaceDestroy方法为空也是如此。