Я работаю над движком карты. Я хочу, чтобы пользователь поворачивал карту. Если я сделаю поворот стандартным рисунком на холсте, это замедлит работу телефона, и плитки карты, повернутые стандартным API холста, выглядят плохо.
Я нашел некоторые рамки OpenGL для Android в Интернете. Но никто из них не делает то, что я хочу. Большинство из них не могут использовать стандартные компоненты Android в рамках OpenGL Activity.
Я хочу поставить пользовательский вид, который нарисован OpenGL компоненту компоновки (например, LinearLayout). Таким образом, я могу поместить все (включая макет OpenGL) в Activity. Я уверен, что это можно сделать, используя стандартный Android OpenGL API. Но DrawGL Draw слишком сложно для меня.
Является ли какой-либо OpenGL-структурой, чтобы я мог создать пользовательское представление OpenGL? Все, что мне нужно - это инфраструктура, которая поддерживает простой рисунок.
Его называют GLSurfaceView. В одном из моих проектов у меня есть следующее:
public static GLView glSurfaceView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
glSurfaceView = new GLView(this);
setContentView(glSurfaceView);
}
Убедитесь, что класс, который вы создаете, расширяет GLSurfaceView.
public class GLView extends GLSurfaceView
В классе GLView вам понадобится следующее:
private GLRenderer _renderer;
public GLView(Context context) {
super(context);
_renderer = new GLRenderer(context);
setRenderer(_renderer);
}
Класс GLRenderer будет реализовывать GLSurfaceView.Renderer
По крайней мере, это то, о чем я думаю, вы спрашиваете. Если не оставить комментарий ниже, и я постараюсь ответить на него лучше.
Стыдно, что вы отказались от OpenGL, я недавно обнаружил его и нашел, что он кучи лучше, чем стандартный рисунок. Использование текстур вместо сохранения изображений в качестве объектов Bitmap значительно лучше использует память устройства (особенно на устройствах с предварительной сотой), и если вы используете ортогональную проекцию, вам не нужно беспокоиться о хорошей части 3D-материала OpenGL. Кроме того, вам больше не нужно заботиться о различных разрешениях устройств, чтобы все материалы, которые вы помещали на экран, были хорошо распределены (вам все равно нужно учитывать соотношение ширины и высоты, но это намного лучше).