Stage3D выбраковка путаницы - PullRequest
       8

Stage3D выбраковка путаницы

0 голосов
/ 30 декабря 2011

В OpenGL настройкой по умолчанию является:

  1. Система координат = правша, с +x->right, +y->up, +z->towards-viewer.
  2. Поэтому, положительное вращение вокруг z сместит xбазисный вектор к y (против часовой стрелки).
  3. Лицевые многоугольники определены как вершины CCW.
  4. Выбраковка граней выполняется с помощью:
glEnable(GL_CULL_FACE);
glCullFace(GL_BACK);

Хорошо, мы все это знаем.Во Flash 11/Molehill/Stage3d значения по умолчанию должны быть одинаковыми.

Однако, если я включаю отбраковку обратной стороны на шаге 4 с помощью:

c3d.setCulling(Context3DTriangleFace.BACK);

, мои лица отбраковываются.Кажется, по умолчанию это Context3DTriangleFace.FRONT.Я создал случай проверки работоспособности в OpenGL и Stage3D, которые в остальном идентичны.Тот же список вершин / индексов, оставьте значения по умолчанию, та же матрица ортогональной проекции, идентичность ModelView, но я должен установить выбрано значение FRONT, а не BACK.

Как будто в Stage3D по умолчанию используется другая обмотка.то есть, как будто под капотом OpengGL было установлено: glFrontFace (GL_CW);вместо OpenGL по умолчанию: glFrontFace (GL_CCW);

Кто-нибудь еще сталкивался с этим?Это сводит меня с ума ...

Ответы [ 2 ]

0 голосов
/ 28 июля 2012

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

Я был прав, Stage3D считает, что лицевая сторона - это обмотка CW в пространстве экрана, в отличие от CCW OpenGL. Я надеюсь, что это поможет любому, кто приходит из OpenGL. Просто измените порядок индексов вашего буфера индекса или измените режим отбора на FRONT. Я решил изменить порядок индексов.

Приветствия

Шейн

0 голосов
/ 30 декабря 2011

Возможно, одна имеет переднюю грань по часовой стрелке, а другая против часовой стрелки. glFrontFace(GL_CW); или glFrontFace(GL_CCW);

...