C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了由于glPushAttrib / glPopAttrib已被弃用,所以保存GL_DEPTH_FUNC等属性的新方式是什么?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试编写现代OpenGL,但是打了一些错误的东西.

我有这个代码

glUseProgram(skyBox_program->id);
    glActiveTexture(GL_TEXTURE1);
    glBindTexture(GL_TEXTURE_CUBE_MAP,skyBox->id);
    glUniform1i(get_program_uniform(skyBox_program,"cubemap_tex"),1);
    //From here
    GLint save_cull_mode,save_depth_mode;
    glGetIntegerv(GL_CULL_FACE_MODE,&save_cull_modE);
    glGetIntegerv(GL_DEPTH_FUNC,&save_depth_modE);
    glCullFace(GL_FRONT);
    glDepthFunc(GL_LEQUAL);
    //To here
        glUniformMatrix4fv(get_program_uniform(skyBox_program,"camera"),1,GL_falSE,cam_rot.mat);
        glBindVertexArray(skyBox_vao);
        glDrawArrays(GL_TRIANGLES,6 * 2 * 3);
    //and these next 2 lines
    glCullFace(save_cull_modE);
    glDepthFunc(save_depth_modE);
glUseProgram(0);

这段代码,你可能意识到,绘制一个天空盒.其中一部分是禁用剔除(所以我们可以看到内部的框),并改变深度功能(基本上是优化,其中一部分在着色器中,部分在这里).我想保存并恢复这些值,但是由于我不能使用gl [Push / Pop] Attrib,我必须自己做.这不仅仅是两个属性,而且如果我用得更多,这很快就会变成一个巨大的痛苦(据我所知,缓慢,因为glGet *不是很快).我读到push / pop函数被弃用,因为它们主要用于处理FFP状态,但是这显然不是FFP状态,而push / pop函数将很适合使用.应该用什么呢?还是要@L_403_0@?

解决方法

我认为这个论坛的帖子opengl.org几乎总结了: http://www.opengl.org/discussion_boards/showthread.php/173957-glPushAttrib-depreciated-replace-by

基本上OpenGL状态预计由客户端处理,因为随着移动到着色器,大部分属性将被存储在您的程序中.这是从OpenGL中删除旧的固定功能管道的一部分.

大佬总结

以上是大佬教程为你收集整理的由于glPushAttrib / glPopAttrib已被弃用,所以保存GL_DEPTH_FUNC等属性的新方式是什么?全部内容,希望文章能够帮你解决由于glPushAttrib / glPopAttrib已被弃用,所以保存GL_DEPTH_FUNC等属性的新方式是什么?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。