初学openGL 参考Nehe写的,没有使用glaux HBITMAP hbitmap; 
BITMAP textureImage; 
hbitmap=(HBITMAP)LoadImage(0,"texture.jpg",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); 
GetObject(hbitmap,sizeof(BITMAP),&textureImage); 
glGenTextures(1,&texture[0]); 
glBindTexture(GL_TEXTURE_2D,texture[0]); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); gluBuild2DMipmaps(GL_TEXTURE_2D,3,textureImage.bmWidth,textureImage.bmHeight,GL_RGB,GL_UNSIGNED_BYTE,&textureImage); 
调试至此句产生如下错误报告: 
unhandled exception at 0x68e27372 in cubic.exe: 0xC0000005: Access violation reading location 0x00143000. 请指点。不胜感激。 

解决方案 »

  1.   

    texture.jpg,你用的是jpg格式的照片?LoadImage不能加载jpg,应该用bmp格式的.
      

  2.   

    换成.bmp以后一样的。仍然在原来的地方产生相同的错误报告;前面的加载图像应该能没有问题(我加了一个测试语句,检测hbitmap的值非空,可以通过)
    应该是gluBuild2DMipmaps的参数问题;
    不管如何,谢谢
      

  3.   

    gluBuild2DMipmaps(GL_TEXTURE_2D,3,textureImage.bmWidth,textureImage.bmHeight,GL_RGB,GL_UNSIGNED_BYTE,&textureImage);
    是不是要把最后一个参数改成textureImage.bmBits
      

  4.   

    有反应的……改了以后……
    变成
    Unhandled exception at 0x68e27372 in cubic.exe: 0xC0000005: Access violation reading location 0x00000000.
    看了一下似乎hbitmap的句柄获得有问题,调试时显示unused,但地址确实被重新分配了一个
    这段代码是在注册完窗口以后的,但不在过程函数里,会不会跟这个有关系
      

  5.   

    我也遇到了这个问题,不过后来我查了下,原因应该是你载入的BMP图片的问题,使用gluBuild2DMipmaps()函数的时候,载入的图片的长宽要是2*N,即图片的长度和宽度不能为奇数,你可以在载入的时候特殊处理一下,或者给个限制条件.
      

  6.   

    具体可以看下OpenGl纹理贴图那章,有讲,新人登陆,有没有分阿~~