Я хочу повернуть свой собственный FrameLayout в 3d в Android. Должен ли я использовать класс GlSurfaceView. Я новичок в компьютерной графике, но знаю теорию вращений и переводов. Чтобы сделать 3d ротацию opengl, мы обычно делаем следующее.
В классе деятельности мы создаем объект GLSurfaceView и устанавливаем его средство визуализации. Объект рендерера создается из класса, который реализует интерфейс GlSurfaceView.Renderer.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GLSurfaceView view = new GLSurfaceView(this);
view.setRenderer(new OpenGLRenderer());
setContentView(view);
}
В нашем классе Renderer мы выполняем чертежи, вращения и переводы следующими методами
// Called when the surface is created or recreated.
public void onSurfaceCreated(GL10 gl, EGLConfig config)
// Called to draw the current frame.
public void onDrawFrame(GL10 gl)
// Called when the surface changed size.
public void onSurfaceChanged(GL10 gl, int width, int height)
Тем не менее, у меня есть пользовательская структура кадра, которая объявлена как
public class RotatedMapView extends FrameLayout
Я хочу сделать это:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RotatedMapView view = new RotatedMapView (this);
view.setRenderer(new OpenGLRenderer());
setContentView(view);
}
Но я не могу, потому что setRenderer специально для GlSurfaceView. Сейчас я просматриваю исходный код GlSurfaceView.java, чтобы адаптировать его к своему дизайну. Ссылка, которую я нашел для GlSurfaceVİew.java: http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest/src/com/android/spritemethodtest/GLSurfaceView.java?r=150
Источник слишком длинный. На самом деле мне не лень это читать, но я хочу быть уверенным, правильно ли я поступаю.