我在一个球面上贴了一张bmp图片,能看到贴图效果,但是换了一张bmp图片后就全都是白色了,请问是什么原因呢?是不是opengl纹理铁图函数对图片还有什么要求呢

解决方案 »

  1.   

    全白的表现的发生原因最可能的就是图片加载不成功,因为在opengl和directx当中都是这样指定的:如果指定了纹理的多边形显示的时候找不到纹理的数据源就用白色显示你可以检查你的新的图片是否存在,格式(有bmp扩展名的未必是bmp格式),颜色深度(是否是256色的)和大小规格(是否非2^n)等
      

  2.   

    都注意了啊,我是用一本图像处理书上的DDB类生成的bmp图,可以在画图工具中看到,颜色深度就不是很清楚了,还有大小是4096*2048,各位能多给点提示吗?比如加载的位图大小有限制方面,谢谢了!
      

  3.   

    4096*2048对于你的显卡来说也许是太大了
    显卡对与可以加载的最大的图片是有限制的
    系统能否支持这么大的位图是个问题
    你可以用acdsee等工具先把这个图片缩小一些,变化成为1024×512再加载看看
    如果可以就再加大一倍,换2048×1024的尝试在dx当中可以查询显卡的能力获得支持的最大纹理的规格是多少
    opengl当中不知道如何查再说,很少有情况需要这么大的一张纹理图片的时候
      

  4.   

    如果你使用的是glbindtextue这个函数可能会有一种情况是你的第二张纹理没有加载成功,因为你没有给它生成一个ID
      

  5.   

    谢谢,我搞定了,是显卡对加载图片大小有限制的原因,我使用glGetIntegerv根据不同GL_MAX_TEXTURE_SIZE加载不同图片。谢谢大家!