1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【OpenGL】二十四 OpenGL 纹理贴图 ( 读取文件内容 | 桌面程序添加控制台窗口

【OpenGL】二十四 OpenGL 纹理贴图 ( 读取文件内容 | 桌面程序添加控制台窗口

时间:2018-06-05 19:22:41

相关推荐

【OpenGL】二十四 OpenGL 纹理贴图 ( 读取文件内容 | 桌面程序添加控制台窗口

文章目录

一、文件读取二、报错处理 ( 'fopen': This function or variable may be unsafe. )三、桌面程序添加控制台窗口四、相关资源

一、文件读取

使用 fopen 函数读取文件 , 然后将磁盘中的文件读取到内存中 ;

首先使用 fopen 函数打开文件 , 这里注意尽量使用绝对路径 , 在 Visual Studio 中使用相对路径可能打开失败 ;

// 打开文件FILE* pFile = fopen(filePath, "rb");

然后使用 fseek 函数获取当前的文件大小 ;

// 判定文件大小, 将文件指针从 "尾部" 开始移动// 移动 0 个字节// 成功返回 0 , 失败返回非 0fseek(pFile, 0, SEEK_END);

最后调用 fread 函数将文件内容读取到数组中 ;

// 读取 pFile 指针指向的内存中的数据 // 读取的数据个数是 nLen 个 // 每个数据的大小是 sizeof(unsigned char) 字节 , 即 1 字节 // 将读取的数据存储到 fileContent 指向的内存中fread(fileContent, sizeof(unsigned char), nLen, pFile);

代码示例 :

#include "utils.h"// 加载文件方法unsigned char* LoadFileContent(const char* filePath){// 该指针指向的内存空间存储文件内容unsigned char* fileContent = nullptr;// 打开文件FILE* pFile = fopen(filePath, "rb"); //printf("打开文件 pFile : %p", pFile);// 如果打开文件成功if (pFile){// 判定文件大小, 将文件指针从 "尾部" 开始移动// 移动 0 个字节// 成功返回 0 , 失败返回非 0fseek(pFile, 0, SEEK_END);// 获取文件指针位置 , 当前文件指针位于文件尾部// 当前的文件指针位置就是文件的字节长度int nLen = ftell(pFile);// 如果文件长度大于 0 , 才去读取文件if (nLen > 0) {// 将文件指针 FILE* pFile 移到文件的开始位置rewind(pFile);// 为文件内容分配一块内存空间 , 即创建一个 nLen + 1 字节的数组// 多出一个字节 , 在字节末尾添加一个 '\0'fileContent = new unsigned char[nLen + 1];// 读取 pFile 指针指向的内存中的数据 // 读取的数据个数是 nLen 个 // 每个数据的大小是 sizeof(unsigned char) 字节 , 即 1 字节 // 将读取的数据存储到 fileContent 指向的内存中fread(fileContent, sizeof(unsigned char), nLen, pFile);// 最后第 nLen + 1 个元素 , 索引是 nLen , 设置为 '\0'fileContent[nLen] = '\0';}// 关闭文件fclose(pFile);}return fileContent;}

调用上述读取文件方法 , 并将读取的内容打印出来 :

// 读取文件内容// 绝对路径 : "D:\\002_Project\\006_Visual_Studio\\OpenGL\\OpenGL\\test.txt"// Visual Studio 中使用相对路径读取不到文件char* str = (char*)LoadFileContent("D:\\002_Project\\006_Visual_Studio\\OpenGL\\OpenGL\\test.txt");printf("%s\n", str);

上述 “D:\002_Project\006_Visual_Studio\OpenGL\OpenGL\test.txt” 文件内容是 " Hello OpenGL "

二、报错处理 ( ‘fopen’: This function or variable may be unsafe. )

处理错误问题 :

1>------ 已启动生成: 项目: OpenGL, 配置: Debug Win32 ------1>utils.cpp1>D:\002_Project\006_Visual_Studio\OpenGL\OpenGL\OpenGL\utils.cpp(10,1): error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt\stdio.h(208): message : 参见“fopen”的声明1>已完成生成项目“OpenGL.vcxproj”的操作 - 失败。========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========

处理方案 :命令行添加 " _CRT_SECURE_NO_WARNINGS " 宏 , 右键点击项目名称 , 选择属性 ,

选择 配置属性 / C/C++ / 命令行 , 设置如下宏 :

/D_CRT_SECURE_NO_WARNINGS

三、桌面程序添加控制台窗口

桌面程序添加控制台窗口 :右键点击项目名称 , 选择 " 属性 " ;

在 " 配置属性 / 生成事件 / 生成后事件 " 中的 " 命令行 " 输入框中输入如下内容 ;

editbin /subsystem:console $(OutDir)$(ProjectName).exe

运行程序 :成功读取到本目录下的 “test.txt” 文件 , 这里有个问题需要注意 , 在 Visual Studio 中使用相对路径读取不到文件 , 必须使用绝对路径才可以 ;

// 读取文件内容// 绝对路径 : "D:\\002_Project\\006_Visual_Studio\\OpenGL\\OpenGL\\test.txt"// Visual Studio 中使用相对路径读取不到文件char* str = (char*)LoadFileContent("D:\\002_Project\\006_Visual_Studio\\OpenGL\\OpenGL\\test.txt");printf("%s\n", str);

四、相关资源

GitHub 地址 :/han120/OpenGL

( GitHub 源码始终都会随着后续博客的进度更新覆盖 , 可能没有本博客的相关源码 , 推荐下载博客源码快照 ) ;

博客源码快照 :/download/han120/14930175

( 该源码是 Windows 桌面程序 , 使用 Visual Studio 打开 )

【OpenGL】二十四 OpenGL 纹理贴图 ( 读取文件内容 | 桌面程序添加控制台窗口 | ‘fopen‘: This function may be unsafe 错误处理 )

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
OpenGL:纹理贴图

OpenGL:纹理贴图

2022-09-30

OpenGL 纹理贴图

OpenGL 纹理贴图

2021-11-11

【openGL版】纹理贴图

【openGL版】纹理贴图

2019-10-09

✠OpenGL-5-纹理贴图

✠OpenGL-5-纹理贴图

2019-12-21