我有一個使用GLES進行渲染的android應用程序。目前使用Java來渲染東西,並呈現很好。由於Android Java應用程序內存的限制,我計劃將原生渲染集成到我的Java渲染代碼中。使用C++和Java的Android OpenGLES渲染
爲此,我遵循基本的本地GLES教程。集成之後,Java渲染不可見,只能看到我用C++渲染的東西。
代碼的最簡單版本是:https://github.com/khedd/JavaCppGLES Java代碼呈現三角形,C++呈現四元組。如果兩者都只被稱爲Quad是渲染器。
我該如何解決這個問題?我應該將所有內容移植到C++嗎?
代碼簡而言之。
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();
}
你爲「記憶原因」做了這個?你爲什麼期望這會使用更少的內存?另外,您的C++和Java OpenGL調用可能在不同的線程上發生,但是,如果沒有Java和C++之間的iterop代碼或想法,那麼提供建議將非常困難。 – MuertoExcobito
它不會使用更少的內存,但在本地我可以使用更多的空間。你也是對的,我會試着在明天提供一個示例代碼。我很確定它們在java的drawFrame調用中位於同一線程中。 – Hakes