2015-05-09 59 views
0

在我的老年活動基礎的解決方案裏面的設置是這樣的:安卓:使用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%的工作解決方案會很好。 –

回答

2

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

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