我使用以下代码读取/ 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);
我可以获取内容,但有时内容会添加一些特殊字符。
答案 0 :(得分:0)
实际上这个问题不是因为Asset Manager,而是因为我使用的着色器代码。
在我阅读着色器内容后,我将创建着色器,如:
GLuint shader = glCreateShader(type);
glShaderSource(shader, 1, &buffer2, NULL);
JNI传输的资产缓冲区或内容缓冲区可能不是NULL 终止,所以你需要在调用时使用'length'参数 glShaderSource。 - 来自其他人。
改变 glShaderSource(着色器,1,& buffer2,& length);