Есть ли способ отслеживать отношения между вершинами и пикселями, используя OpenGL или DirectX?11 - PullRequest
0 голосов
/ 11 октября 2011

Я хотел бы знать, существует ли способ генерировать одно статическое изображение трехмерного объекта (1 отдельный объект, представленный в виде списка треугольников), используя OpenGL или DirectX, что позволяет вам узнать, какие конкретные треугольники определяют объект были использованы для генерации каждого из пикселей, образующих визуализированное изображение. Я процитировал OpenGL и DirectX, потому что они широко используют графику API, если кто-то знает другие способы достижения предыдущего, работающего на высокой скорости, я также был бы заинтересован в его / ее ответе. В настоящее время я использую собственную программную реализацию конвейера рендеринга, чтобы отслеживать взаимосвязи, но я бы хотел использовать мощь и эффекты (в основном, сглаживание, тени и особые методы визуализации кожи), которые предлагают графические карты.

Большое спасибо за вашу помощь

Ответы [ 2 ]

5 голосов
/ 11 октября 2011

Конечно, просто выведите идентификатор треугольника в отдельную цель рендеринга (используя MRT).В GLSL-терминах это gl_PrimitiveID , а в HLSL-терминах это SV_PrimitiveID .Если вы используете мультисэмплинг, то ваш буфер мультисэмплов для этой цели рендеринга станет списком примитивов, которые вносят вклад в каждый пиксель.

1 голос
/ 11 октября 2011

Нарисуйте каждый треугольник другим цветом. R8G8B8 предлагает вам около 16,7 миллионов возможных цветов, поэтому с ним можно индексировать это количество треугольников. Вам не нужно рисовать в экранном буфере. Вы можете визуализировать изображение как обычно и выполнить рендеринг ко второй цели, индексируя треугольники в буфере вне экрана.

...