Алмаз,
Но только не этого форума. :)
Ты забыл добавить ИМХО. :)
А вообще, ничего сложного в своем вопросе не увидел.
Вопрос: Есть ли автоматическое отсечение невидимых вершин и их сортировка от дальних к ближним для вызовов вершинного шейдера в OpenGL?
Ответ: Есть.
Автоматическое отсечение невидимых поверхностей:
glEnable( GL_CULL_FACE ); glFrontFace( GL_CW ); // если геометрия строится по часовой стрелке, по-умолчанию стоит против, то-есть GL_CCW.
Автоматическая сортировка от дальних к ближним:
glEnable( GL_DEPTH_TEST ); glDepthFunc( GL_LESS );
( Знатоки скажут, что тест глубины это не только сортировка от дальних к ближним! Но мне нужен был результат, а он тот же, только с меньшим количество перерисовок. Так, что подходит. :) )
Работает как для фиксированного конвеера так и для программируемого! Вот именно это я и хотел услышать.
Хотя ради спортивного интереса попробую такое написать исключительно на шейдере.
Cyber_Wanderer
"А вообще, ничего сложного в своем вопросе не увидел..."
:) Это только потому что под "автоматическим отсечением невидимой геометрии" и под "их сортировкой от дальних к ближним" здесь подразумевают совсем другие вещи. Кроме того, твои определения неправильно отражают суть происходящего.
То что ты спросил, принято называть: "отрисовка только одной стороны треугольника" и "сортировка пикселей по дальности от камеры"/"тест глубины".
.Scotina
:) Это только потому что под "автоматическим отсечением невидимой геометрии" и под "их сортировкой от дальних к ближним" здесь подразумевают совсем другие вещи. Кроме того, твои определения неправильно отражают суть происходящего.
То что ты спросил, принято называть: "отрисовка только одной стороны треугольника" и "сортировка пикселей по дальности от камеры"/"тест глубины".
Нет, просто отсечение невидимых граней строится на алгоритме обратного обхода треугольника, а то, что обратная сторона этого треугольника не видна, это уже чисто побочный эффект. Да и не кажется странным, что флаг, который этим заправляет, называется GL_CULL_FACE, и в нем есть слово CULL, что значит отсекать, так что, сказал я все правильно.
Ну и... Сортировка пикселей по дальности от камеры, это опять же способ, с таким же успехом можно сортировать треугольники, только алгоритм должен быть достаточно умен и учитывать самопересечения.
Когда я задавал вопросы, я понятия не имел, какой из алгоритмов использует GL, так что звиняйте, но суть вопроса передал вполне правильно. Не с терминологической точностью, но думаю догадаться можно было. В следующий раз попробую точнее. :) А натолкнула меня на ответ, как ни странно, диаграмма программированного конвеера Open GL, которая все же имела то, о чем я спрашивал. Хотя, опять же натыкался в интернетах на абсолютно противоречивые отголоски, когда говорилось, если мы используем программированный конвеер в OpenGL, то "отсечение и сортировку" нужно делать самому, что оказалось наглой ложью.
Тема в архиве.