OpenGL: окончательное решение путаницы в системе координат?

Я устал думать, как, черт возьми, мои координаторы работают над каждым делом.

Я слышал, что могу перевернуть ось Y с помощью этого кода:

glScalef(1, -1, 1);

Но должен ли я? Не нарушает ли это некоторые другие внешние функции, освещение и т. д.?


person Community    schedule 18.01.2010    source источник


Ответы (3)


На этот вопрос нет правильного ответа да/нет. Вызов glScalef(1, -1, 1) означает использование левой, а не правой системы координат, исторически это было выбором, например, Direct3D и интерфейса RenderMan. Некоторым людям кажется более интуитивно понятным, чтобы положительная ось z указывала внутрь экрана, а не наружу (это одна из версий левосторонней системы координат, а ось y, направленная вниз, — другая).

Если вы решили переключить систему координат, вам придется изменить некоторые стандартные настройки OpenGL, чтобы она заработала. Например, вы, вероятно, захотите вызвать glCullFace(GL_FRONT) (или изменить порядок всех треугольников, отправляемых в OpenGL).

person Andreas Brinck    schedule 18.01.2010

я могу сказать, что привыкание к значениям по умолчанию opengl — это самый быстрый способ избежать путаницы.

person Defd    schedule 18.01.2010

Я могу ошибаться, но это может вывернуть ваши модели наизнанку. Вам, вероятно, также потребуется поменять местами порядок намотки вершин. Однако, если вы используете двусторонние полигоны, вам не о чем беспокоиться.

person Daniel Yankowsky    schedule 18.01.2010