|
|
发表于 2006-2-18 21:14:00
|
显示全部楼层
Re: 请教:为何纹理在某些机器上显示不出来,640*480小纹理
1.首先应该确定你使用的是哪一种纹理,比如1d,2d,3d,cube,rect
2.得到显卡所能支持该种纹理的最大尺寸 glGetIntegerv(xx,&max_size);
这里xx
对于1d和2d纹理GL_MAX_TEXTURE_SIZE
对于3d纹理GL_MAX_3D_TEXTURE_SIZE
对于cube纹理GL_MAX_CUBE_MAP_TEXTURE_SIZE
对于rect纹理GL_MAX_RECTANGLE_TEXTURE_SIZE_ARB(如果显卡支持GL_ARB_texture_rectangle )或者
GL_MAX_RECTANGLE_TEXTURE_SIZE_EXT(如果显卡支持GL_EXT_texture_rectangle)或者
GL_MAX_RECTANGLE_TEXTURE_SIZE_NV(如果显卡支持
GL_NV_texture_rectangle)
3.对于opengl 2.0以前的显卡,除了rect纹理,尺寸必须为2^n,opengl 2.0以后纹理没有这个限制,但是对于有些比较旧的显卡,如ati 9500,如果纹理尺寸不是2^n,并且寻址模式不是clamp时,不能得到硬件加速,因此运行速度就比较慢.同时rect纹理只能使用clamp寻址模式,并且它的寻址范围是1..texture_size
4对于比较旧的支持gl2.0的显卡,必须更新驱动才可以支持gl2.0
|
|