Opengl es 使用glTexCoordPointer的NPOT Atlas(C+;+;/iOS)问题

Opengl es 使用glTexCoordPointer的NPOT Atlas(C+;+;/iOS)问题,opengl-es,Opengl Es,我的应用程序使用地图集,并使用glTexCoordPointer到达地图集的一部分以显示项目。 它可以很好地使用两种纹理的强大功能,但我想使用NPOT来减少使用的内存量 事实上,图片本身很好地加载了线性过滤器和钳制到边缘的包装(显示的内容来自图片,即使使用alpha),但显示变形。 坐标不正确,“形状”更像是梯形而不是矩形 我猜我必须玩glEnable(),在POT纹理的情况下传递GL\u TEXTURE\u 2D,在另一种情况下传递GL\u APPLE\u TEXTURE\u 2D\u lim

我的应用程序使用地图集,并使用
glTexCoordPointer
到达地图集的一部分以显示项目。 它可以很好地使用两种纹理的强大功能,但我想使用
NPOT
来减少使用的内存量

事实上,图片本身很好地加载了线性过滤器和钳制到边缘的包装(显示的内容来自图片,即使使用alpha),但显示变形。 坐标不正确,“形状”更像是梯形而不是矩形

我猜我必须玩
glEnable()
,在
POT
纹理的情况下传递
GL\u TEXTURE\u 2D
,在另一种情况下传递
GL\u APPLE\u TEXTURE\u 2D\u limited\u npot
,但我找不到这样做的方法。 另外,我没有
GL\u纹理\u矩形\u ARB
,我不知道这是否是一个问题


有人有过同样的问题吗?

自从OpenGL-2(即大约10年)以来,常规纹理的大小不再受到限制。您可以使用任何您想要的图像大小,它都可以工作。

好吧,它在图片加载方面起作用,我可以看到显示的内容来自NPOT纹理。问题是coords(通过glTexcoordPointer传递的纹理的%)根本不显示它们应该显示的内容…@ChristopherLargilliere:如果你简单地映射到一个大的四边形上,纹理会是什么样子?确保它已正确加载。尤其是对齐问题会严重影响NPo2(使用Po2纹理,您经常被迫进入内存布局,您根本无法对齐)。嗯,我不是OpenGL大师,我正在尝试在屏幕上显示完整的纹理(实际上减半了),有点困难。顺便说一句,什么会导致对齐问题?我认为下一个罐子问题或类似的问题,因为不是罐子2048*1024纹理,而是1305*1023。Y位置是正常的(1023与1024不远…),而X位置大部分是混乱的。可能是混合值的像素int计算出错了。肯定是大小有问题。给定坐标(X,Y)的纹理点和(W,H)的纹理大小,X偏移量为Y*(NextPO2(W)-W)。。。我认为openGL将纹理视为一个罐子。我正在使用偏移量来对抗它们,但我想有一件简单的事情可以做,这需要更少的努力。@ChristopherLargilliere:如果在调用glTexImage之前放置一个
glPixelStorei(GL\u UNPACK\u ALIGNMENT,1)
,尝试一下会发生什么。