OpengGL面临选定面孔的裁决

时间:2015-06-12 13:09:01

标签: opengl

我从文件导入几何数据,对象可以分为两类:打开或关闭。

如果所有这些都被关闭了,我可以直接剔除背面,但由于其中一些没有关闭,我不能,因为用户只能看到正面。

我知道对象是打开还是关闭。所以问题是,我可以做一些像启用面部剔除,绘制所有关闭的对象然后禁用面部剔除和绘制开放网格?

如果答案是否定的,那么哪一项会带来更好的表现?

  1. 禁用面部剔除并使用两个面渲染所有三角形
  2. 启用面部剔除并为未关闭的网格绘制2个三角形(一个CW和其他CCW)?

1 个答案:

答案 0 :(得分:1)

您可以仅为某些对象启用面部剔除。由于OpenGL是一个状态机,从你调用glEnable(GL_CULL_FACE)的那一刻起,所有对象都被剔除。禁用它时,不再调用任何内容。因此,对于您的情况,您将不得不做类似的事情:

glEnable(GL_CULL_FACE);
//Draw all closed objects

glDisable(GL_CULL_FACE);
//Draw all open objects