【问题标题】:How do I implement glPushAttrib(GL_CURRENT_BIT) in OpenGL ES 1.x如何在 OpenGL ES 1.x 中实现 glPushAttrib(GL_CURRENT_BIT)
【发布时间】:2017-07-04 23:17:32
【问题描述】:

我正在尝试将我的 OpenGL 项目修改为 OpenGL ES 1.x。但是有一个函数调用我找不到任何解决方案来替换它。

glPushAttrib(GL_CURRENT_BIT | GL_LIGHTING_BIT | GL_COLOR_BUFFER_BIT | GL_ENABLE_BIT );

我在 OpenGL ES 1.x 中找不到 GL_CURRENT_BIT 掩码和 glPushAttrib 函数。

简单地说,我只是从 glPushAttrib 参数中删除了 GL_CURRENT_BIT 掩码,应用程序在窗口上显示错误的背景(我在 OpenGL 环境中测试过。背景是纹理。)。是否有任何解决方案可以替换 glPushAttrib(GL_CURRENT_BIT) 并让我在 OpenGL 上正确运行应用程序,或者是否有任何解决方案可以让我实现可以在 OpenGL 和 OpenGL ES 上正确运行的 glPushAttrib(GL_CURRENT_BIT)?谢谢!

【问题讨论】:

    标签: c++ opengl-es opengl-es-1.1


    【解决方案1】:

    glPushAttrib 在 OpenGL ES 中不存在。旨在将GL_CLIENT_PIXEL_STORE_BIT 作为输入的函数实际上是glPushClientAttrib,它也不存在(因此常量也不存在)。

    它们的功能本质上是存储可以使用glPixelStorei 函数设置的所有状态。这可以手动实现,通过在设置状态时记录这些状态,并对glPixelStorei 进行等效调用以恢复它们。请参阅here(第 8 项)进行讨论(关于 OpenGL,适用于 OpenGL ES,因为它没有 glPush/PopClientAttrib)。

    【讨论】:

    • 感谢您的回答。对不起,我写错了常数。我真正想问的是GL_CURRENT_BIT。我有什么解决方案可以替换 glPushAttrib(GL_CURRENT_BIT)?
    • 相同的解决方案适用于您修改后的问题,但状态不同。如果您转到glPushAttrib 的链接,则会有一个表格指示它保存的状态。在 GLES 中,您只需记录这些设置(在您的代码中)并再次设置它们以获得相同的功能。
    • 谢谢,我已经解决了这个问题。我找到了一个名为“胶水”的开源项目。它实现了 glPushAttrib 函数。再次感谢。
    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-13
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多