0
Open GLESを通してアンドロイドネイティブコードでイメージをレンダリングする必要があります。イメージのバイト配列はJavaコードで生成され、パラメータとしてネイティブコードに送信されます。ネイティブコードを使用してレンダリングすると常に黒い画面が表示されます。ネイティブコードは次のとおりです。レンダリングイメージを開くGLES android ndk
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;
}
私はイメージをレンダリングしたいだけです.EGLSurfaceにバッファを書き込む方法はありますか? –