有人能看到这段代码出了什么问题吗?
SIZE_BG是6MB,因为我正在尝试绘制一个大的位图图像(3366x600)。我使用malloc来防止我的映像溢出堆栈。我在调用glDrawPixels()时遇到访问冲突错误。当我在调用glDrawPixels之前检查了前几个字节时,bgPtr似乎指向了正确的数据,而且它们是正确的。
bgPtr = (char*)malloc(SIZE_BG);
fstream inFile(texFileName, ios::in | ios::binary);
inFile.read(bgPtr, SIZE_BG);
inFile.close();
//... other code
glDrawPixels(3366, 600, GL_BGRA_EXT, GL_UNSIGNED_BYTE, bgPtr+54);发布于 2009-04-09 05:19:15
SIZE_BG为6MB
3366×600大约是192万像素
BRGA表示每个像素4个字节
因此,3366×600×4只有7.7MB多一点
因此,你的缓冲区太小了。glDrawPixels()将读过末尾,进入未分配的内存。
https://stackoverflow.com/questions/732894
复制相似问题