OpenGL в Android

1

Я работаю над движком карты. Я хочу, чтобы пользователь поворачивал карту. Если я сделаю поворот стандартным рисунком на холсте, это замедлит работу телефона, и плитки карты, повернутые стандартным API холста, выглядят плохо.

Я нашел некоторые рамки OpenGL для Android в Интернете. Но никто из них не делает то, что я хочу. Большинство из них не могут использовать стандартные компоненты Android в рамках OpenGL Activity.

Я хочу поставить пользовательский вид, который нарисован OpenGL компоненту компоновки (например, LinearLayout). Таким образом, я могу поместить все (включая макет OpenGL) в Activity. Я уверен, что это можно сделать, используя стандартный Android OpenGL API. Но DrawGL Draw слишком сложно для меня.

Является ли какой-либо OpenGL-структурой, чтобы я мог создать пользовательское представление OpenGL? Все, что мне нужно - это инфраструктура, которая поддерживает простой рисунок.

Теги:
opengl-es

2 ответа

3

Его называют 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

По крайней мере, это то, о чем я думаю, вы спрашиваете. Если не оставить комментарий ниже, и я постараюсь ответить на него лучше.

  • 0
    Благодаря Брэндону, я решил проблему с помощью стандартного холста, поскольку движку карты нужен только 2D-рендеринг. Я не очень хорош в математике (особенно плохо в Матрице, поэтому я не хочу использовать GLSurfaceView, так как мне нужно обрабатывать все вычисления матрицы самостоятельно. Вместо этого я ищу среду, подобную cocos2D, которую можно использовать в качестве компонента View.
0

Стыдно, что вы отказались от OpenGL, я недавно обнаружил его и нашел, что он кучи лучше, чем стандартный рисунок. Использование текстур вместо сохранения изображений в качестве объектов Bitmap значительно лучше использует память устройства (особенно на устройствах с предварительной сотой), и если вы используете ортогональную проекцию, вам не нужно беспокоиться о хорошей части 3D-материала OpenGL. Кроме того, вам больше не нужно заботиться о различных разрешениях устройств, чтобы все материалы, которые вы помещали на экран, были хорошо распределены (вам все равно нужно учитывать соотношение ширины и высоты, но это намного лучше).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню