objective-c – 在iSGL3d中实现2-power-of-2纹理
我写了一个很大程度上依赖于iSGL3d进行3D渲染的应用程序,现在我已经到了一个点,我需要开始摆弄纹理大小以满足内存分配的需要.
我的应用程序使用非常大的纹理(1024×1024),从那个到512×512是不可接受的 因此,使用GL ES 2.0作为基础,我希望将纹理略微减少到接近700×700 我知道这是可能的,因为我在以前的生活中使用非2次幂纹理手写的OpenGL代码 但我有一段时间试图筛选iSGL3d的代码,以找到我可以影响这一变化的地方……而且该项目现在似乎已被抛弃. 基本上,默认情况下,即使您使用GLES 2.0实例,iSGL3d也只会制作一个2位幂的位图并将纹理转储到其中,留下一堆透明像素.这是毫无价值的. 将纹理大小强制为非二次幂图像会生成GL错误.我假设这是因为我没有在任何需要强制的地方强制执行它,或者iSGL3d没有正确使用GLES 2.0,因为它应该是 任何指针都很有用…… 解决方法
您是否为这些纹理设置了缩小采样以不使用mipmap?它默认为mipmap选项,因此如果不使用mipmap,则必须将其设置为其他选项. 例如 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |