У меня есть приложение для Android, которое использует GLES для рендеринга. В настоящее время используется Java для рендеринга, а рендеринг - в порядке. Из-за ограничений в памяти приложений Android Java я планирую интегрировать собственный рендеринг с моим кодом рендеринга Java.
Чтобы сделать это, я выполнил основные учебные руководства GLES. После интеграции рендеринг Java не был виден, были видны только те вещи, которые я визуализировал на С++.
Простейшая версия кода: https://github.com/khedd/JavaCppGLES Java-код отображает треугольник, а на С++ - квадрат. Если оба вызываются, то только Quad является рендерером.
Как я могу решить эту проблему? Должен ли я переносить все на С++?
Код в двух словах.
MyGLRenderer(){
mTriangle = new Triangle();
mCppRenderer = new MyCppRenderer();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glClearColor(1.0f, 0.0f, 1.0f, 1.0f);
//init java triangle
mTriangle.init();
//init c quad
mCppRenderer.init(); //comment this line to make java triangle appear
}
@Override
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
}
@Override
public void onDrawFrame(GL10 gl) {
gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
mTriangle.draw();
mCppRenderer.draw ();
}