Android:在片段中使用GLSurfaceView
在我以前的基于活动的解决方案中,设置如下所示:Android:在片段中使用GLSurfaceView,android,android-fragments,opengl-es,Android,Android Fragments,Opengl Es,在我以前的基于活动的解决方案中,设置如下所示: glSurfaceView = new GLSurfaceView(this); registerForContextMenu(glSurfaceView); if (supportsEs2) { glSurfaceView.setEGLContextClientVersion(2); renderer = new GLRenderer(context);
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);
}
}
提前感谢。天真的解决方案似乎正在发挥作用:
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;
}
我没有使用碎片,所以我可能遗漏了一些东西。但是
GLSurfaceView
可以像任何其他视图一样成为布局的一部分。您通常从GLSurfaceView
派生自己的视图,并在布局xml中使用该视图。这可能是真的,但从xml加载GL曲面时遇到问题。所以,如果有一个经验丰富的人能提供100%的有效解决方案,那就太好了?这是你的定制课程吗?