[急] OpenGL纹理贴图,运行时总会报出访问冲突的错误

扎瓦菜鸟 2016-01-05 06:43:52
unsigned int LoadTex(string Image)
{
unsigned int Texture;

FILE* img = NULL;
img = fopen(F_PATH, "r+");

if (NULL == img){
MessageBox(NULL, TEXT("aaa"), TEXT("aaa"), MB_ICONINFORMATION | MB_YESNO);
exit(0);
}

unsigned long bWidth = 0;
unsigned long bHeight = 0;
DWORD size = 0;

fseek(img, 0, SEEK_SET); /*函数设置文件指针stream的位置。stream将指向以fromwhere为基准,偏移offset(指针偏移量)个字节的位置*/
fread(&bWidth, 4, 1, img); /*从一个文件流中读数据,最多读取count个元素,每个元素size字节,返回实际读取到的元素个数*/
fread(&bHeight, 4, 1, img);
fseek(img, 0, SEEK_END);
size = ftell(img);/*用于得到文件位置指针当前位置相对于文件首的偏移字节数*/

unsigned char *data = (unsigned char*)malloc(size);/*系统申请分配指定size个字节的内存空间*/

fseek(img, 0, SEEK_SET); // image data
fread(data, size, 1, img);

fclose(img);

glGenTextures(1, &Texture); /*根据纹理参数返回n个纹理索引。*/
glBindTexture(GL_TEXTURE_2D, Texture); /*允许建立一个绑定到目标纹理的有名称的纹理 告诉OpenGL下面对纹理的任何操作都是对它所绑定的纹理对象的*/
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, bWidth, bHeight, GL_BGR_EXT, GL_UNSIGNED_BYTE, data); /*将载入的位图文件(*.bmp)转换成纹理贴图。*/

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); /*确定如何把纹理象素映射成像素.*/
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

if (data)
free(data);

return Texture;
}

这是加载贴图图片的那段代码,运行时会出现“0x71556A0D (glu32.dll) (1.4aaa.exe 中)处有未经处理的异常: 0xC0000005: 读取位置 0xB094A506 时发生访问冲突。”这样的错误弹窗出来,光标定位到glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);这一句上。不知道是什么原因,请哪位朋友帮帮忙 很急很关键T.T 谢谢了
...全文
222 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-01-06
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧