您的位置:首页 > 移动开发 > Android开发

android opengl jni中纹理贴图

2016-06-28 20:00 591 查看
jni中实现opengl纹理贴图,发现直接用cv::Mat的data数据通过glTexImage2D函数没有效果。查看了下android的源码,貌似glTexImage2D支持GL_RGBA和GL_RGB格式的数据,但GL_RGB的实际格式是RGB565的,所以需要将cv::Mat的BGR格式做转换。GL_RGBA简单测试代码片:

glActiveTexture(GL_TEXTURE0);

glBindTexture(GL_TEXTURE_2D,texture);

    unsigned int *data = (unsigned int*)malloc(64*48);

    for (int i = 0; i < 48; i++)

    for (int j = 0; j < 64; j++)

    data[i * 64 + j] = 0x0000ffff;

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 64, 48, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);

    free(data);

改变data的值可以看到改变了贴图区的颜色,说明确实将纹理贴上去了。

GL_RGB测试代码片:

glActiveTexture(GL_TEXTURE0);

glBindTexture(GL_TEXTURE_2D,texture);

    unsigned short *data = (unsigned short*)malloc(64*48);

    for (int i = 0; i < 48; i++)

    for (int j = 0; j < 64; j++)

    data[i * 64 + j] = 0xf81f;

    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 64, 48, 0, GL_RGB, GL_UNSIGNED_SHORT_5_6_5, data);

    free(data);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android opengl jni