从资源中读取文本文件时的奇怪行为
Strange behavior when reading text files from assets
我目前正在玩原生活动和GLES 2.0,我正在使用ndk从资源加载GLES的着色器。
这是简单着色器的来源:
顶点着色器:simple.vsh
attribute vec4 vPosition;
void main()
{
gl_Position = vPosition;
}
片段着色器:simple.fsh
precision mediump float;
void main()
{
gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
}
这是我用来加载着色器文件的代码
AAsset *shaderAsset= AAssetManager_open(app->activity->assetManager, path, AASSET_MODE_BUFFER);
size_t length = AAsset_getLength(shaderAsset);
LOGI("Shader source size: %dn", length);
char* buffer = (char*) malloc(length);
AAsset_read(shaderAsset, buffer, length);
LOGI("Shader source : %sn", buffer);
AAsset_close(shaderAsset);
free(buffer);
当我运行应用程序时,我在android logcat:中看到了这一点
Shader source size: 71
07-22 13:23:52.683 11135 11146 I native-activity: Shader source : attribute vec4 vPosition;
07-22 13:23:52.683 11135 11146 I native-activity: void main()
07-22 13:23:52.683 11135 11146 I native-activity: {
07-22 13:23:52.683 11135 11146 I native-activity: gl_Position = vPosition;
07-22 13:23:52.683 11135 11146 I native-activity: }
07-22 13:23:52.683 11135 11146 I native-activity: sP
07-22 13:23:52.683 11135 11146 I native-activity: Shader source size: 86
07-22 13:23:52.683 11135 11146 I native-activity: Shader source : precision mediump float;
07-22 13:23:52.683 11135 11146 I native-activity: void main()
07-22 13:23:52.683 11135 11146 I native-activity: {
07-22 13:23:52.683 11135 11146 I native-activity: gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
07-22 13:23:52.683 11135 11146 I native-activity: }
07-22 13:23:52.683 11135 11146 I native-activity: fs`
请注意文件末尾的"sP"answers"fs'"。
我还在构建xml文件中为文件扩展名添加了"nocompression",以防出现问题,但因此问题仍然存在。
有人知道是什么原因造成的吗?
不知何故,尾随的零没有进入资产。
尝试使用
// one extra char for the trailing zero
char* buffer = (char*) malloc(length + 1);
AAsset_read(shaderAsset, buffer, length);
// fix the string to be zero-terminated
buffer[length] = 0;
相关文章:
- 参考资源文件VC++中的$(SolutionDir)
- 从存储为 Windows 资源 (c++) 的 png 中获取 png 文件数据
- 使用 Bazel 生成 QT 资源文件
- meson-build:wxWidgets 资源文件,用于 Windows 未构建
- VS:在构建/exe中包含资源文件
- VS2019:资源文件错误:中性(默认)(未知子语言:0x8)
- Qt - 为什么Visual Studio 2019在qml资源中添加10Mb文件后无法再编译我的项目?
- 从 GUI 文件资源管理器执行程序,并且不生成终端
- 连接资源文件中的字符串,并将其传递给菜单项字符串 (winapi) c++
- 如何添加mp3文件作为资源,然后播放
- Visual Studio 2015资源视图和资源编译器使用不同的方法在项目目录中查找图标文件.如何修复
- 在gcc上附加带有资源的二进制文件
- 通过文件资源管理器获取文件夹目录
- 如何使用C 浏览目录以创建文件资源管理器
- 停止SetVolumeMountPoint打开文件资源管理器
- 在XP上使用windows文件资源管理器时,停止打开explorer.exe任务栏
- 从C++中非常大的文本文件资源读取
- 在Visual Studio中加载文本文件资源加载的内容超过了应有的水平
- C++:操作文件资源
- 读取一个嵌入式文本文件资源Visual Studio c++