如何在 iPhone 上使用 OpenGL ES 正确显示带有渐变的 png?
我尝试在基于 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
基本问题是纹理或帧缓冲区(不太可能)中的 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.