Войти
ПрограммированиеФорумГрафика

OpenGL: Основы. (комментарии) (7 стр)

Страницы: 1 2 3 4 5 6 7
#90
20:10, 2 янв. 2013

Алмаз,

Но только не этого форума. :)

Ты забыл добавить ИМХО. :)


А вообще, ничего сложного в своем вопросе не увидел.

Вопрос: Есть ли автоматическое отсечение невидимых вершин и их сортировка от дальних к ближним для вызовов вершинного шейдера в OpenGL?

Ответ: Есть.

            Автоматическое отсечение невидимых поверхностей:

  glEnable( GL_CULL_FACE );
  glFrontFace( GL_CW ); // если геометрия строится по часовой стрелке, по-умолчанию стоит против, то-есть GL_CCW.
            Автоматическая сортировка от дальних к ближним:
  glEnable( GL_DEPTH_TEST );
  glDepthFunc( GL_LESS );
  ( Знатоки скажут, что тест глубины это не только сортировка от дальних к ближним! Но мне нужен был результат, а он тот же, только с меньшим количество перерисовок. Так, что подходит. :) )

Работает как для фиксированного конвеера так и для программируемого! Вот именно это я и хотел услышать.
Хотя ради спортивного интереса попробую такое написать исключительно на шейдере.


#91
20:29, 2 янв. 2013

Cyber_Wanderer
"А вообще, ничего сложного в своем вопросе не увидел..."

:) Это только потому что под "автоматическим отсечением невидимой геометрии" и под "их сортировкой от дальних к ближним" здесь подразумевают совсем другие вещи. Кроме того, твои определения неправильно отражают суть происходящего.

То что ты спросил, принято называть: "отрисовка только одной стороны треугольника" и "сортировка пикселей по дальности от камеры"/"тест глубины".

#92
21:25, 2 янв. 2013

.Scotina

:) Это только потому что под "автоматическим отсечением невидимой геометрии" и под "их сортировкой от дальних к ближним" здесь подразумевают совсем другие вещи. Кроме того, твои определения неправильно отражают суть происходящего.
То что ты спросил, принято называть: "отрисовка только одной стороны треугольника" и "сортировка пикселей по дальности от камеры"/"тест глубины".

Нет, просто отсечение невидимых граней строится на алгоритме обратного обхода треугольника, а то, что обратная сторона этого треугольника не видна, это уже чисто побочный эффект. Да и не кажется странным, что флаг, который этим заправляет, называется GL_CULL_FACE, и в нем есть слово CULL, что значит отсекать, так что, сказал я все правильно.

Ну и... Сортировка пикселей по дальности от камеры, это опять же способ, с таким же успехом можно сортировать треугольники, только алгоритм должен быть достаточно умен и учитывать самопересечения.

Когда я задавал вопросы, я понятия не имел, какой из алгоритмов использует GL, так что звиняйте, но суть вопроса передал вполне правильно. Не с терминологической точностью, но думаю догадаться можно было. В следующий раз попробую точнее. :) А натолкнула меня на ответ, как ни странно, диаграмма программированного конвеера Open GL, которая все же имела то, о чем я спрашивал. Хотя, опять же натыкался в интернетах на абсолютно противоречивые отголоски, когда говорилось, если мы используем программированный конвеер в OpenGL, то "отсечение и сортировку" нужно делать самому, что оказалось наглой ложью.

Страницы: 1 2 3 4 5 6 7
ПрограммированиеФорумГрафика

Тема в архиве.