Android读取本机代码中的资源资源,最后是特殊字符

时间:2013-09-02 12:30:36

标签: android android-ndk

我使用以下代码读取/ assets /文件夹中的文件,

//AAssetManager* mgr  from parameter.
    AAsset* asset = AAssetManager_open(mgr, filen_ame, AASSET_MODE_BUFFER);
if (NULL == asset) {
    __android_log_print(ANDROID_LOG_ERROR, "hdrijni", "_ASSET_NOT_FOUND_");
    return;
}
long size = AAsset_getLength(asset);
char * buffer = (char*) malloc(sizeof(char)*size);
int byteRead = AAsset_read(asset, buffer, size);
AAsset_close(asset);

我可以获取内容,但有时内容会添加一些特殊字符。

1 个答案:

答案 0 :(得分:0)

实际上这个问题不是因为Asset Manager,而是因为我使用的着色器代码。

在我阅读着色器内容后,我将创建着色器,如:

    GLuint shader = glCreateShader(type);
glShaderSource(shader, 1, &buffer2, NULL);

JNI传输的资产缓冲区或内容缓冲区可能不是NULL 终止,所以你需要在调用时使用'length'参数 glShaderSource。 - 来自其他人。

改变         glShaderSource(着色器,1,& buffer2,& length);