安卓:使用GLSurfaceView片段

问题描述:

在我的老年活动基础的解决方案里面的设置是这样的:安卓:使用GLSurfaceView片段

glSurfaceView = new GLSurfaceView(this); 
     registerForContextMenu(glSurfaceView); 
     if (supportsEs2) { 
      glSurfaceView.setEGLContextClientVersion(2); 
      renderer = new GLRenderer(context); 
      glSurfaceView.setRenderer(renderer); 
      rendererSet = true; 
     } 
     else { 
      Toast.makeText(context, "This device does not support OpenGL ES 2.0.",Toast.LENGTH_LONG).show(); 
      return; 
     }  
     setContentView(glSurfaceView); 

那么假设一想相同的行为,我该如何使用渲染的片段。

这是我非常基本的片段:

public class SketchBoardFragment extends Fragment{ 

    public SketchBoardFragment(){} 

    public static SketchBoardFragment newInstance(){ 
     SketchBoardFragment fragment = new SketchBoardFragment(); 
     return fragment; 
    } 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View rootView =  inflater.inflate(R.layout.fragment_sketch_board,container,false); 
     return rootView; 
    } 

    @Override 
    public void onAttach(Activity activity) { 
     super.onAttach(activity); 
     ((MainActivity)activity).onSectionAttached(1); 
    } 
} 

在此先感谢。

+0

我没有使用过的片段,所以我可能会失去了一些东西。但是'GLSurfaceView'可以像任何其他视图一样成为布局的一部分。您通常从'GLSurfaceView'派生自己的视图,并在您的布局xml中使用该视图。 –

+0

这可能是真的,但是从xml加载GL表面有问题。所以,从有经验的人那里获得100%的工作解决方案会很好。 –

天真的解决方案似乎是工作:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     /*View rootView = inflater.inflate(R.layout.fragment_sketch_board,container,false); 
     return rootView;*/ 

     GLSurfaceView glSurfaceView = new GLSurfaceView(getActivity()); 
     GLRenderer renderer = new GLRenderer(); 
     glSurfaceView.setEGLContextClientVersion(2); 
     glSurfaceView.setRenderer(renderer); 

     return glSurfaceView; 
    } 
+0

什么是GLRenderer?是你的自定义类吗? – Devrath