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

#opengl #directx #3d

#opengl #directx #3D

Вопрос:

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

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

Ответ №1:

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

Ответ №2:

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