加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – 在iSGL3d中实现2-power-of-2纹理

发布时间:2020-12-16 07:00:54 所属栏目:百科 来源:网络整理
导读:我写了一个很大程度上依赖于iSGL3d进行3D渲染的应用程序,现在我已经到了一个点,我需要开始摆弄纹理大小以满足内存分配的需要. 我的应用程序使用非常大的纹理(1024×1024),从那个到512×512是不可接受的 因此,使用GL ES 2.0作为基础,我希望将纹理略微减少到接
我写了一个很大程度上依赖于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,因为它应该是

任何指针都很有用……

解决方法

simply by disabling mipmapping,even valid textures fail to draw

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

例如

glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读