【发布时间】:2017-06-13 15:10:23
【问题描述】:
我需要在 Android 原生代码中通过 Open GLES 渲染图像。图像的字节数组在java代码中生成并作为参数发送到native代码。但是通过native代码渲染总是显示黑屏。本机代码为:
JNIEXPORT int JNICALL
Java_com_example_hellojni_MyView_renderByEgl(JNIEnv *env, jobject instance, jobject surface,
jint width, jint height, jbyteArray byteArray_) {
EGLDisplay display;
EGLConfig config;
EGLContext context;
EGLSurface eglSurface;
ANativeWindow* pWindow = ANativeWindow_fromSurface(env, surface);
EGLint num_config;
display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(display, NULL, NULL);
eglBindAPI(EGL_OPENGL_ES_API);
eglChooseConfig(display, attribute_list, &config, 1, &num_config);
context = eglCreateContext(display, config, EGL_NO_CONTEXT, NULL);
eglSurface = eglCreateWindowSurface(display, config, pWindow, NULL);
eglMakeCurrent(display, eglSurface, eglSurface, context);
jboolean isCopy;
unsigned char * pCData = (unsigned char*)(*env)->GetByteArrayElements(env, byteArray_, &isCopy);
if(isCopy)
{
(*env)-> ReleaseByteArrayElements(env, byteArray_, pCData, JNI_ABORT);
}
glTexImage2D(GL_TEXTURE_2D,0,10,10,width,height,GL_RGBA,GL_UNSIGNED_BYTE,pCData);
glFlush();
eglSwapBuffers(display, eglSurface);
sleep(10);
return EXIT_SUCCESS;
}
【问题讨论】:
标签: opengl-es android-ndk