Я изучаю OpenGL ES для Android, но я немного запутался.
В примерах, которые я видел, рисование объекта, скажем, квадрат делается в рендере через:
public class MainRender implements GLSurfaceView.Renderer {
private Square square; // the square
private Context context;
/** Constructor to set the handed over context */
public MainRender(Context context) {
this.context = context;
// initialise the square
this.square = new Square();
}
@Override
public void onDrawFrame(GL10 gl) {
// clear Screen and Depth Buffer
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
square.draw(gl);
}
Это замечательно и все, но моя главная задача - отделить большую часть логики от процесса рендеринга ...
Так что мне не удобно создавать экземпляр класса Square внутри класса визуализации.
Я знаю, что безопасный способ общения между потоками - это использование queueEvent (), но в примерах, которые я видел, только события очереди изменяют, вращают или переводят существующий класс в рендерер, и я не могу понять сам Как нарисовать что-то, созданное в другом потоке (в конечном счете, динамически через hashmap было бы идеально), но мне нужен пример того, как это сделать вообще, или если это возможно?
-Спасибо