利用Android NDK开发OpenGLES如何利用上层Bitmap生成纹(2)

  //初始化OpenglES场景设置
  Native_SolarWind.onSurfaceCreated(gl10, eglconfig, 0, 0);
 }

 

到这里为止,上层绑定纹理映射的工作完成。下面是在JNI中调用上层的纹理:

JNI生成的头文件:

/*
 * Class:     com_ygc_Native_Method

 * Method:    DrawText
 * Signature: ([B)V
 */
JNIEXPORT void JNICALL Java_com_ygc_Native_Method_DrawText
  (JNIEnv *, jclass, jintArray);

对应的.cpp文件

JNIEXPORT void JNICALL Java_com_ygc_Native_Method_DrawText
(JNIEnv *env , jclass cls, jintArray texture)
{
 TextureString = (GLuint *)env->GetIntArrayElements(texture,0);

}

其中TextureString变量为一个整型指针变量:extern GLuint *TextureString;用来绑定纹理映射。我们把android上层绑定纹理的整型变量的地址传递给TextureString,这样我们在cpp文件中,就可以利用这个地址来使用上层绑定的纹理了,类似于:glBindTexture(GL_TEXTURE_2D, *TextureString);

由于不能把全部代码贴上来,可能有些人看不太明白,对此我表示抱歉。如果有人需要使用这种方法,有不甚理解,可以回复我,我会详细解答你的疑惑。利用这种方法还有一个问题,就是在第一次渲染的时候,上层的纹理不可使用,必须旋转屏幕,重新加载,才可以正常显示,具体原因还在调查。

当然最好的方法还是在cpp中绑定纹理,但是我现在还没有实现,希望了解此方法的人能给我一些帮助。谢谢。

希望以上文档对你有一些帮助。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwzpzs.html