Android texSubImage2D - 不同设备上是否有不同的行为?

3
调用texSubImage2D时,在三星Galaxy S3/Galaxy Note 2上,我似乎得到的是我传入的位图以其中心为位置,而在三星Galaxy S2上则是以其左上角为位置。
这使得我的纹理在S3/Galaxy Note 2上完全失真。
有人能确认这个方法在这些设备之间确实存在偏移位图的差异吗?
如何确保在所有设备上都能获得一致的texSubImage2D行为?

2
该函数至少应在各个设备上保持一致。因此,查看您实际的代码以及您可能做错的事情(如果有的话)可能会更有帮助。 - Christian Rau
@Christian Rau,你在Galaxy S2和S3上使用这个方法是否得到了相同的结果? - Navigateur
我无法在任何东西上获得任何行为。 - Christian Rau
1个回答

3

texSubImage2D的行为是一致的,我猜想你正在从资源中加载纹理,并且在Note 2 / S3(这两个设备都是xhdpi)上相比于S2(hdpi)进行了缩放,因此出现了差异。你可能使用的是固定大小的纹理。


但是这在S4上并没有发生,尽管它是一个xhdpi设备。我没有从资源中加载纹理,而是通过Canvas的draw...方法直接将它们绘制到Bitmap上,然后通过GLUtils.texSubImage2D简单地上传到GPU。 - Navigateur
S4是xxhdpi设备(因此也存在密度差异),然后发布一些代码(首先你如何创建位图,尺寸是否硬编码等)。我可以保证glTexSubImage2D正常工作,因此问题出在其他地方。 - arcone1
我不是在谈论直接调用glTexSubImage2D,而是GLUtils.texSubImage2D。你是否已经按照我描述的方式在S2和S3上测试了这种方法?我正在创建每个位图以通过Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)上传,然后通过new Canvas(bitmap).draw...方法绘制到它上面 - 在所有情况下绘图都很好,只有偏移量不同(在S2和S4上由其左上角定位,但在S3上由其中心定位),当我调用GLUtils.texSubImage2D时。 - Navigateur
我在我的游戏中使用GLUtils.texSubImage2D,并且它可以跨所有设备正常工作,因此我非常确定问题出现在其他地方(也许是绘图代码本身?)鉴于信息如此模糊,真的很难猜测。 - arcone1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接