OpenGL - GL_FRONT против GL_FRONT_AND_BACK - PullRequest
3 голосов
/ 12 июня 2010

Я работаю с проектом с открытым исходным кодом, который использует OpenGL для рендеринга в 3D.В конструкции материалов я вижу такой код:

// set ambient material reflectance
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, mAmbient);

В других примерах используется это:

glMaterialfv(GL_FRONT, GL_AMBIENT, mAmbient);

Итак, мой вопрос, в чем здесь разница?При каких обстоятельствах это выглядело бы по-другому, и, если мой том был окружен всеми нормалями, указывающими наружу, есть ли разница в производительности?

1 Ответ

7 голосов
/ 12 июня 2010

Один устанавливает материал для передней и задней граней, другой - только для лицевых граней. Если вы отбрасываете лица назад, это не имеет большого значения. Если вы не отбраковываете задние грани, вы увидите материал только на передней грани.

Если вы ограничиваете объем, вы, вероятно, не будете видеть непосредственно задние грани - единственный способ, которым вы сделали бы, - это если бы камера была внутри объема. Если он снаружи, то вы никогда не увидите задних граней, и мало смысла их рендерить. (Вот почему во многих играх, если вы наведете камеру на объект, это будет выглядеть так, как будто все полигоны являются односторонними: это выборка задней грани) OpenGL просто имеет возможность устанавливать разные свойства для передней и задней граней треугольника / четырехугольника / и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...