• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

android - 使用 glTexImage2D 绘制 63*63 图像

[复制链接]
菜鸟教程小白 发表于 2022-12-12 14:52:34 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在android中,使用这个代码是有效的:

glTexImage2D(GL_TEXTURE_2D, 0, GL_BGRA_EXT, content.width, content.height, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, content.pixels);

但在 iOS 中不行,这段代码只能绘制 64 *64(2 的幂)

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, content.width, content.height, 0, GL_BGRA_EXT, GL_UNSIGNED_BYTE, content.pixels);

我该怎么办?

非常感谢!!!



Best Answer-推荐答案


在您的 glTexImage2D 调用之前使用它:

// Use tightly packed data
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);

更多信息在这里:http://www.khronos.org/opengles/sdk/1.1/docs/man/glPixelStorei.xml

[...]GL_PACK_ALIGNMENT 指定内存中每个像素行开头的对齐要求。允许的值为 1(字节对齐)、2(与偶数字节对齐的行)、4(字对齐)和 8(行从双字边界开始)。初始值为 4。[...]

这可能不适用于所有设备。但是现在任何针对的严肃设备都应该支持它。 然而,这种方法的一个缺点是,OpenGL 读取缓冲区一次只能读取一个字节。因此,当使用 1 而不是默认值 4 时,对 glTexImage2D 的调用可能会慢 4 倍左右。当然,数据在内存中没有正确对齐,但这应该不是问题。 我不得不推荐使用大小为 2 次方的纹理,因为使用 63x63 纹理的缺点比仅加载 64x64 纹理和调整纹理坐标要糟糕得多。

关于android - 使用 glTexImage2D 绘制 63*63 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023397/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap