使用OpenGL“glTexImage2D”的内存错误

时间:2010-11-14 04:31:02

标签: c++ memory opengl

我一直在关注OpenGL和C ++的教程: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06

......我发现自己面临着相当大的错误。每当我尝试编译时,我的程序崩溃时出现类型错误System.AccessViolationException。我已经将问题分离出来了:

glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);

如果您不想查看该教程,则内存似乎设置如下:

AUX_RGBImageRec *TextureImage[1];
memset(TextureImage,0,sizeof(void *)*1);

任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:4)

由于TextureImage[0]为NULL,您崩溃了。初始memset将其设置为NULL;如果您在本教程中学习,下一行代码就是:

if (TextureImage[0]=LoadBMP("Data/NeHe.bmp"))

请注意,此处有 =符号,而不是您通常会看到的双==(您甚至可能会在此处收到编译器警告;抑制它,在赋值周围添加额外的括号))。确保您正确复制了这行代码,并且此处只有一个=

如果实际上您确实只有一个=,请检查以确保LoadBMP返回非NULL值。如果它返回NULL,最可能的原因是它找不到位图文件Data/NeHe.bmp,因为它不存在或者它在错误的目录中查找它。确保您当前的工作目录设置正确,以便它可以找到图像。

答案 1 :(得分:0)

原来我试图加载的位图太大了。我将它缩小到256x256px并且效果很好。