У меня возникли проблемы с изменением рендеринговой сетки в моем GLSurfaceView, а точнее в Renderer, я предполагаю, что в рабочем процессе Класс рендерера.Как изменить рендер объектов в GLSurfaceView.Renderer
Итак, давайте рассмотрим, мы имеем следующее:
public class MyRenderer extends GLSurfaceView.Renderer{
private Mesh aMesh;
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config){
GLES20.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
aMesh = new Mesh("TestMesh1");
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
...Creating viewport...
}
@Override
public void onDrawFrame(GL10 gl) {
GLES20.glClear(gl.GL_COLOR_BUFFER_BIT);
...all Maths to create mvpMatrix...
aMesh.draw(mvpMatrix);
}
}
Так что это прекрасно работает, AMESH является отображение на экране со всеми хорошими настройками. Теперь я хочу изменить эту сетку, когда пользователь нажимает на кнопку, и обновить свой рендер Я создал специфический метод в визуализаторе, как следует:
public class MyRenderer extends GLSurfaceView.Renderer{
private Mesh aMesh;
public void changeMesh(String newMeshName){
GLES20.glClear(gl.GL_COLOR_BUFFER_BIT | gl.GL_DEPTH_BUFFER_BIT);
....
aMesh=new Mesh(newMeshName);
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config){
....
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
...
}
@Override
public void onDrawFrame(GL10 gl) {
aMesh.draw(mvpMatrix);
}
}
Так что в моем уме, вызывая changeMesh бы onDrawFrame метод перерисовать aMesh с новой моделью, правильно? Моя проблема заключается в том, что результатом является пустой рендерер. Это даже не крушение или так. Когда я вызываю changeMesh(), ранее хорошо отображаемая сетка исчезает (как и ожидалось), но новая не является ничьей.
Так что мне интересно, для этого требуется создать новый рендерер (который кажется немного тяжелым)? Есть ли способ запросить пропуск в OnSurfaceCreated вручную? Я немного потерял эту ошибку, потому что это неожиданно.
Ваш код, как описано, должен работать. После того, как вы изменили свою сетку и проверили, что происходит, я перейду через вызов рисования в отладчике. –