我写了一个很大程度上依赖iSGL3d进行3D渲染的应用程序,现在我已经到了一个需要开始摆弄纹理大小的内存分配原因。
我的应用使用非常大的纹理(1024x1024),从那个到512x512是不可接受的
因此,使用GL ES 2.0作为基础,我希望将纹理略微减少到接近700x700
我知道这是可能的,因为我在以前的生活中使用非2次幂纹理手写的OpenGL代码
但是我有一段时间试图筛选iSGL3d的代码以找到我可以影响这一变化的地方......而且该项目现在似乎已被抛弃。
基本上,默认情况下,即使您使用GLES 2.0实例,iSGL3d也只会制作一个2位幂的位图并将纹理转储到其中,留下一堆透明像素。这没用。
将纹理大小强制为非二次幂图像会生成GL错误。我假设这是因为我没有在任何需要强制的地方强制执行它,或者iSGL3d没有正确使用GLES 2.0,因为它应该是
任何指针都很有用......
答案 0 :(得分:1)
只需禁用mipmapping,即使有效的纹理也无法绘制
您是否为这些纹理设置了缩小采样以不使用mipmap?它默认为mipmap选项,因此如果不使用mipmap,则必须将其设置为其他选项。
e.g。
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);