首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模仿旧GPU的大NPOT纹理

模仿旧GPU的大NPOT纹理
EN

Stack Overflow用户
提问于 2009-12-03 15:05:59
回答 4查看 983关注 0票数 1

在我的2D游戏中,我需要的纹理可能是任意大,可以是NPOT和非方形。它们只被映射到一种基元:通过GL_QUADS (四个四角被映射到四个纹理角)的矩形。有时,纹理矩阵在绘制之前已经被缩放。

我想让我的游戏在任何地方都能工作,甚至在旧的/廉价的录像机上,它只允许小的和/或大麻的纹理。我应该使用什么解决方案?它应该..。

  • 易于实施
  • 有很好的表现。

目前,我知道以下几种选择:

  • 使用类似于扩展GL_TEXTURE_RECTANGLE_{EXT,NV,ARB},这样NPOT可以在不支持OGL2.0本地NPOT纹理的卡片上工作。
代码语言:javascript
复制
- this doesn't solve the "big texture" problem.
- does it work on a maximal number of PCs? do videocards that support native OGL2.0 NPOT support those extensions as well?
- which of the three variants EXT/NV/ARB to use?

  • 实现BigTextures作为一堆小的,锅纹理切片,这是他们仔细地画在几个相邻的四边形。这两者都提供了“大纹理”和NPOT,但这是有点困难和限制。
  • 实现我的NPOT纹理作为填充在右边和底部透明的大麻纹理。会浪费内存,使纹理拼接变得更加困难,而且它不能解决“大纹理”问题。
  • 使用一些预先制作的解决方案。

问题视频卡的一个例子是Mobile 945GMExpress芯片组,它似乎不支持本地NPOT。

更新:我最后使用了第三个选项。最酷的是,我能够使用glTexSubImage2D,而不是手动填充纹理。这太疯狂了。是的,它不提供“大纹理”支持,但我意识到我的目标GPU支持多达2048x2048,这对我来说已经足够好了。哦,移动英特尔945 supported芯片组甚至不支持GL_TEXTURE_RECTANGLE_EXT。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-12-03 15:22:36

如果您的所有UV坐标在0,1范围内,您可以将您的NPOT纹理打包到一个纹理地图集

由于您的纹理可以任意大,所以我可能会建议将NPOT纹理(以及相应的四块)分割成大小不超过硬件处理能力的花盆块。如果选择此解决方案,请记住将包装模式设置为GL_CLAMP_TO_EDGE,以最小化边缘的呈现工件(如果需要缩小,仍然会得到一些)。

如果卡不支持OpenGL 2.0 NPOT纹理,那么它们不太可能支持GL_TEXTURE_RECTANGLE_{EXT,NV,ARB}

票数 2
EN

Stack Overflow用户

发布于 2009-12-03 15:23:43

好吧,你最好在每个级别上都使用退路。

如果您的卡支持较大的纹理,但只支持大麻,那么您可以只分配一个纹理的下一个力量2向上。对于1024x768纹理,ie分配一个1024x1024,并将其拉伸到完整的纹理大小。这将很好地瓦片,你不应该注意到扭曲从拉伸操作不好。

如果你的卡不能做大的纹理,你有一个问题。唯一真正的解决办法是细分三角形,并使用许多较小的纹理。正如您所说,这不是最好的解决方案,因为这样做非常密集。事实上,在无法支持这种纹理的硬件上,您很可能会发现额外的顶点加载也会影响性能。在这种情况下,您可能只需缩放纹理回到一个较低的细节版本。这不是一个很好的解决方案,但这可能是你唯一的选择。你唯一的选择就是不支持这种卡..。

票数 0
EN

Stack Overflow用户

发布于 2009-12-03 15:30:16

作为一个经验法则,我会坚持做你所有的纹理壶。它更快,你不需要担心兼容性。请记住,您的纹理大小不必与其显示的大小有1比1的相关性--您可以在图像编辑器中将NPOT纹理拉伸到壶大小,然后将其显示在正确的大小上。纹理地图集也是一件好事,它们减少了你所做的纹理转换的数量,这可能是相当慢的。

对于大纹理,你只能选择将它们分割成较小的纹理。这是一个严格的硬件限制,因此,您需要投入一些工作来分割您的纹理(在飞行或事先)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1840447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档