c++ - 我如何在 OpenGL ES 1.x 中实现 glPushAttrib(GL_CURRENT_BIT)

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

我正在尝试将我的 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 上正确运行应用程序,或者是否有任何解决方案可以实现 glPushAttrib(GL_CURRENT_BIT) 我可以在 OpenGL 和 OpenGL ES 上正确运行?谢谢!

最佳答案

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

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

关于c++ - 我如何在 OpenGL ES 1.x 中实现 glPushAttrib(GL_CURRENT_BIT),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263891/

相关文章:

c - 使用 openGL ES 1.1 渲染 .h Blender 导出到 iPhone

c++ - 没有默认构造函数的父类(super class)的子类,不调用任何其他构造函数

c++ - 识别 libstdc++ 的版本

android - 如何始终将物体放在相机前

c++ - 如何在 Qt 5.4 程序中的文件之间共享 OpenGL 3.3+ 函数和上下文

c++ - 在 C++ 中修改模拟时间

c++ - 如何围绕特定点旋转 vtk 场景?

ios - 没有 GLKit 的 OpenGL ES 2

Android - 当前显示的屏幕大小