0

我正在使用以下代码读取 /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);

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

4

1 回答 1

0

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

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

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

JNI 传输的资源缓冲区或内容缓冲区可能不是以 NULL 结尾的,因此在调用 glShaderSource 时需要使用 'length' 参数。——来自他人。

只需更改 glShaderSource(shader, 1, &buffer2, &length);

于 2013-09-02T13:27:09.727 回答