c++ - OpenGl ES glPushAttrib() 3D模型渲染

标签 c++ opengl-es-2.0 3d-model

我知道我不能在 openGL ES 中执行 glPush/PopAttrib,我必须手动执行此操作。我的问题是: 我需要启用/禁用什么和 psuh/pop 才能正确渲染 3D 模型?

我遇到的问题是要渲染的不同对象之间混合了颜色。此外,某些对象没有纹理,看起来它正在尝试对其应用纹理。

是否有一种“安全的”可能未优化的方法来确保每次渲染新对象时 openGL 状态都是“干净的”?有点像 glPushAttrib(GL_ALL_ATTRIB_BITS)

最佳答案

不,没有。但是 OpenGL ES 2.0 中可能的状态要少得多(~10),无论如何,其他一切都由您自己的着色器控制。基本上,您只需启用/禁用所有可能的状态即可确定(并正确配置您启用的状态)。

可以在此处找到所有州的列表:

http://www.khronos.org/opengles/sdk/docs/man/xhtml/glEnable.xml

关于c++ - OpenGl ES glPushAttrib() 3D模型渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798294/

相关文章:

three.js - 在 Three.js 中使用 OBJMTLoader 的 WebGL 导入模型失败

unity-game-engine - 如何将布料模拟从 Blender 导入到 Unity

c++ - 在 Mac OS X(10.11) 上安装 opencv(3.1.0) 时出错

c++ - 运算符在类中定义为 friend 的奇怪行为

c++ - 存储或反射(reflect)在变量的 "reference level"

opengl-es - 如何创建多停止渐变片段着色器?

ios - 如何实现巨型纹理

c++ - 在C++上接收 “Error: expected an identifier”的 “==”

java - OpenGL ES 2.0 - 多个 View 如何使用相同的渲染器?

cesiumjs - gltf 模型失去了照明并且很暗