4

我已经编写了一个严重依赖 iSGL3d 进行 3D 渲染的应用程序,现在我已经到了需要开始调整纹理大小的地步,因为内存分配的原因。

我的应用程序使用非常大的纹理 (1024x1024),从那个到 512x512 是不可接受的

因此,以 GL ES 2.0 为基础,我想将我的纹理稍微减少到更接近 700x700

我知道这是可能的,因为我在前世煞费苦心地手写了使用非 2 次幂纹理的 OpenGL 代码

但是我花了很长时间试图筛选 iSGL3d 的代码以找到我可以影响这种变化的地方......现在该项目似乎被放弃了。

基本上,默认情况下,即使您使用 GLES 2.0 实例,iSGL3d 也只会制作一个二次幂位图并将您的纹理转储到其中,留下一堆透明像素。这是毫无价值的。

将纹理大小强制为非二次方图像会产生 GL 错误。我假设这是因为我没有在任何需要强制的地方正确地强制它,或者 iSGL3d 没有正确使用 GLES 2.0,因为它应该是

任何指针都会很有用......

4

1 回答 1

1

仅仅通过禁用 mipmapping,即使是有效的纹理也无法绘制

您是否将这些纹理的缩小采样设置为不使用 mipmap?它默认为 mipmap 选项,因此如果您不使用 mipmap,则必须将其设置为其他值。

例如

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
于 2012-08-07T19:16:46.513 回答