纹理作为两个特定的幂?
Textures as particular powers of two?
我正在使用纹理使用着色器预先计算一些位置值,但收到一个错误消息,提示纹理不是 2 的幂。事实上,我确实确保将它们扩展为正方形(7,043,716 纹素,即 2654 的平方)但是我开始怀疑纹理必须是 2 的特定幂 - 也许可以被 8 整除?例如8x8、16x16、32x32、64x64,这些数字不断增加。是这样吗,如果是,有上限吗?
我认为您不需要是 2 的特定幂,但 gl.getParameter(gl.MAX_TEXTURE_SIZE)
应该告诉您您所使用的浏览器和硬件可用的上限,并且必须是 至少 64。(注意:根据文档,它只是 "a rough estimate";但它是您在不尝试上传的情况下所能获得的最好的,我认为这会低估它)
我通常是一个 iOS 人,所以我可以直截了当地告诉你 iPhone 4 及以下的最高点为 2048,但 4s 及以上的可以支持至少 4096。假设您的代码无法处理低于 2654 的下限,请根据您的意愿进行推断。
我正在使用纹理使用着色器预先计算一些位置值,但收到一个错误消息,提示纹理不是 2 的幂。事实上,我确实确保将它们扩展为正方形(7,043,716 纹素,即 2654 的平方)但是我开始怀疑纹理必须是 2 的特定幂 - 也许可以被 8 整除?例如8x8、16x16、32x32、64x64,这些数字不断增加。是这样吗,如果是,有上限吗?
我认为您不需要是 2 的特定幂,但 gl.getParameter(gl.MAX_TEXTURE_SIZE)
应该告诉您您所使用的浏览器和硬件可用的上限,并且必须是 至少 64。(注意:根据文档,它只是 "a rough estimate";但它是您在不尝试上传的情况下所能获得的最好的,我认为这会低估它)
我通常是一个 iOS 人,所以我可以直截了当地告诉你 iPhone 4 及以下的最高点为 2048,但 4s 及以上的可以支持至少 4096。假设您的代码无法处理低于 2654 的下限,请根据您的意愿进行推断。