【问题标题】:OpenGL ES displaying HUD display has no color on top of textured 3D objects显示 HUD 显示的 OpenGL ES 在带纹理的 3D 对象上没有颜色
【发布时间】:2011-02-10 11:40:28
【问题描述】:

我是 iphone OS 开发的初学者。

我在这里遵循了 jeff 的关于 iphone OS 中的 hud 显示的教程 http://iphonedevelopment.blogspot.com/2010/02/drawing-hud-display-in-opengl-es.html 该示例适用于以等面体作为 HUD 背景的随附项目,并且使用颜色和文本按预期工作。

但是,当我将代码复制到我修改过的项目中时,使用他的教程系列之一http://iphonedevelopment.blogspot.com/2009/05/opengl-es-from-ground-up-part-6_25.html 中的纹理对象,我发现无论我如何更改颜色设置,HUD 显示都没有颜色。

我反复尝试禁用和启用客户端状态和 GL 模式,但没有运气。 任何分析过情况,经历过这种情况的人,已经找出代码中需要更改的地方,请告诉我

【问题讨论】:

  • 您是否启用了照明,glEnable(GL_LIGHTING)?在绘制HUD时尝试禁用
  • 嗨 epatel,是的,GL_LIGHTING 已启用,但是当我尝试在 Ortho 中禁用它时,应用程序会直接退出而没有任何错误,然后我做了几个实验,所以它不会直接退出,但是HUD的颜色仍然是黑色的。顺便说一句,我的灯光分别在平截头体和正交上启用/禁用了“GL_LIGHTING”和“GL_LIGHT0”。你还有什么建议?顺便说一句,设置视图也使用“glLightfv”之类的功能,您认为这也可能是一个因素吗?
  • 退出?!听起来很奇怪……但另一件事。我认为您还应该在绘制 HUD 之前执行 glDisable(GL_TEXTURE_2D)。
  • 是的,退出,调试器停止。绝对禁用 GL_TEXTURE_2D 可以绘制原始形状(在这种情况下为 3 个正方形),并且在编写文本之前必须再次启用 GL_TEXTURE_2D。起初我得到了颜色,但副作用是 3D 对象变暗了,所以除了 HUD 什么都看不到。解决方案是在切换回 Frustum 视图时设置照明环境、漫射和灯光位置等。感谢epatel,您在这里帮助了我,并解决了这个问题。干杯:)

标签: iphone opengl-es hud


【解决方案1】:

在绘制 HUD 之前检查是否禁用了 GL_LIGHTINGGL_TEXTURE_2D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多