6
Seçenekler menüsünden bir öğe seçildiğinde, GLES20
yöntemini çağırmak istiyorum.OpenGL'yi Android'deki ana iş parçacığından kullanma
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.clear:
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
break;
// ...
}
}
ben main
dizisindeki değil GLThread
olduğum beri bu işe yaramaz. Şöyle ki: hiçbir geçerli bağlam OpenGL ES API
çağrı (diş başına bir kez kaydedilir)
Ama işler çalışma almak için ne gerekiyor?
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.clear:
// GLSurfaceView.queueEvent
surface.queueEvent(new Runnable() {
@Override
public void run() {
GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT);
}
});
break;
// ...
}
}
hi Matthias, sana başvurunuzda bu hatayı karşılaştıklarında söyleyebilir android 3.2.Could aynı hatayı alıyorum: –
@RunO OpenGL ve ana uygulama farklı iş parçacıklarında çalışıyor. Bu nedenle, ana iş parçacığından OpenGL komutlarını çalıştıramazsınız (söz konusu kaynak koduna bakın). Yani, ana iş parçacığında olmak, bu komutu OpenGL iş parçacığına sıralamak zorundasınız (cevabımdaki kaynak koduna bakın). Umarım bu yardımcı olur. Aksi takdirde yeni bir soru başlatabilir, sorununuzu açıklayabilir, bir yorumda bana bir bağlantı bırakabilir ve ne yapabileceğimi görebilirim. – Matthias
@Matthias çok teşekkürler –