我需要在我的项目中提高性能,因此考虑实现剪裁和后续的背面剔除。
所以我在我的顶点着色器中查找顶点是否面向我,如果是真的,我就渲染它,如果不是,则不渲染。但是如何在顶点着色器中表示不渲染呢?
同样的,在剪裁方面,我该如何在顶点着色器中只渲染这一部分呢?或者我理解有误?我对OpenGl还很陌生,我的项目是为iPhone开发的,使用的是OpenGl ES 2.0。
顶点没有正面或反面之分。当3个或更多的顶点相遇时,根据约定(顺/逆时针),他们组成的平面(三角形)面向前方或背后。
您只需启用剔除,在着色器中不需要进行任何其他操作。
一些感兴趣的API是:(在iOS中也应该差不多,但iOS不完全符合OGLES)
glDisable / glEnable with argument GL_CULL_FACE
glCullFace with argument GL_FRONT, GL_BACK or GL_FRONT_AND_BACK
glFrontFace with argument GL_CW or GL_CCW
你可以在你的片段中使用discard