我一直在关注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);
任何帮助都会很棒。感谢。
答案 0 :(得分:4)
由于TextureImage[0]
为NULL,您崩溃了。初始memset
将其设置为NULL;如果您在本教程中学习,下一行代码就是:
if (TextureImage[0]=LoadBMP("Data/NeHe.bmp"))
请注意,此处有单 =
符号,而不是您通常会看到的双==
(您甚至可能会在此处收到编译器警告;抑制它,在赋值周围添加额外的括号))。确保您正确复制了这行代码,并且此处只有一个=
。
如果实际上您确实只有一个=
,请检查以确保LoadBMP
返回非NULL值。如果它返回NULL,最可能的原因是它找不到位图文件Data/NeHe.bmp
,因为它不存在或者它在错误的目录中查找它。确保您当前的工作目录设置正确,以便它可以找到图像。
答案 1 :(得分:0)
原来我试图加载的位图太大了。我将它缩小到256x256px并且效果很好。