大佬教程收集整理的这篇文章主要介绍了由于glPushAttrib / glPopAttrib已被弃用,所以保存GL_DEPTH_FUNC等属性的新方式是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
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状态预计由客户端处理,因为随着移动到着色器,大部分属性将被存储在您的程序中.这是从OpenGL中删除旧的固定功能管道的一部分.
以上是大佬教程为你收集整理的由于glPushAttrib / glPopAttrib已被弃用,所以保存GL_DEPTH_FUNC等属性的新方式是什么?全部内容,希望文章能够帮你解决由于glPushAttrib / glPopAttrib已被弃用,所以保存GL_DEPTH_FUNC等属性的新方式是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。