私の単純なGLES20アプリでは、描画するために実行時にいくつかのオブジェクトを追加しようとしています。私は正方形のArrayListの持っている私のレンダラクラスで :ここGLES20を使用して実行時に描画するオブジェクトを追加する方法は?
private ArrayList<Square> mSquares = new ArrayList<Square>();
は私Squareクラスです。
は、onSurfaceCreated
に作成するとうまく描画されます。
しかし、私が実際にやりたいことは何ですか。実行時にボタンをクリックしてに四角形を描くことにより、をmSquares
に追加する必要があります。
public void AddFigure(float x, float y, float z)
{ // color coords angle
mSquares.add(new Square("Red square", new float[] {1, 0, 0, 1}, new float[] {x, y, z}, 100f));
}
私は私の活動のボタンをクリックすることで、このメソッドを呼び出しています:
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mGLRenderer.AddFigure(1f, 1f, 1f);
}
});
しかし、それは常にこの例外をスロー:私のレンダラクラスで
私はAddFigure()
メソッドを作成し
E/AndroidRuntime: FATAL EXCEPTION: GLThread 220
java.util.ConcurrentModificationException
および
E/libEGL: call to OpenGL ES API with no current context (logged once per thread)
E/emuglGLESv2_enc: device/generic/goldfish-opengl/system/GLESv2_enc/GL2Encoder.cpp:s_glEnableVertexAttribArray:741 GL error 0x501
Info: Invalid vertex attribute index. Wanted index: 4294967295. Max index: 16
どういうわけかglBufferData
とglBufferSubData
を使って修正しようとしましたが、成功しません。 おそらく、それを行うには例やwikiがありますか?
'ArrayList'が、それはそれだCollections.synchronizedList() – Mohamed