如何在 iPhone 上使用 OpenGL ES 正确显示带有渐变的 png?

发布于 2024-07-25 18:29:53 字数 132 浏览 4 评论 0原文

我尝试在基于 OpenGL ES 的 iPhone 游戏中使用带有渐变的 png 作为纹理。 渐变绘制不正确。 我怎样才能解决这个问题?

我所说的“未正确绘制”是指渐变不平滑,并且似乎退化为特定颜色的部分,而不是平滑过渡。

I've tried using pngs with gradients as textures in my OpenGL ES based iPhone game. The gradients are not drawn correctly. How can I fix this?

By "not drawn correctly" I mean the gradients are not smooth and seem to degrade to sections of a particular color rather a smooth transition.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耀眼的星火 2024-08-01 18:29:53

基本问题是纹理或帧缓冲区(不太可能)中的 RGB 位太少。 PNG 文件不会直接由图形硬件使用——它必须转换为某种内部格式。 我不知道 OpenGL ES API,但想必您要么直接将 .PNG 文件交给它,要么首先执行某种转换步骤并将转换后的数据交给 Open GL ES。 无论哪种情况,请参阅相关文档以确保所使用的内部格式具有足够的深度。 例如,256 色调色板图像就足够了,24 位 RGB 或 32 位 RGBA 格式也足够。 我强烈怀疑你的 PNG 被转换为 RGB15 或 RGB16,每个颜色分量只有 5 或 6 位——不足以显示平滑的渐变。

The basic problem is having too few bits of RGB in your texture or (less likely) your frame buffer. The PNG file won't be used directly by the graphics hardware -- it must be converted into some internal format. I do not know the OpenGL ES API, but presumably you either hand it the .PNG file directly or you first do some kind of conversion step and hand the converted data to Open GL ES. In either case consult the relevant documentation to ensure that the internal format used is of sufficient depth. For example, a 256 color palettized image will be sufficient as would a 24 bit RGB or 32 bit RGBA format. I strongly suspect your PNG is converted to RGB15 or RGB16 which has only 5 or 6 bits per color component -- not nearly enough to display a smooth gradient.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文