Оба графических API (OpenGL и DirectX) создают четко определенный конвейер, в котором программируются несколько этапов. Эти программируемые каскады требуют принятия фиксированного минимального объема данных и должны выполнять четко определенный диапазон операций над ним и выводить некоторый определенный минимальный вывод, чтобы данные могли быть правильно переданы на следующую ступень. Кажется, что эти конвейеры предназначены для работы только с ограниченным количеством типов геометрических данных, которые в случае как D3D, так и OGL являются вершинными данными и координатами текстуры.
Но, если дан случай, когда приложение, которое я планирую сделать, не использует вершины (или даже воксели) для представления своих геометрических данных и не выполняет точно преобразования, проекции, растеризацию, интерполяцию или что-либо подобное, такие ограничения API-интерфейсов или трубопровод усложнит ситуацию.
Итак, есть ли способ, которым мы можем изменить графический конвейер таким образом, чтобы функциональные возможности каждого этапа с данными и тип данных, выводимых на каждом этапе, менялись в моих интересах? Если нет, то есть ли способ, с помощью которого я могу использовать «сырые» функции API для создания собственного конвейера? Если нет, то, пожалуйста, укажите, почему это невозможно.
РЕДАКТИРОВАТЬ : Мое приложение использует функции плотности для представления геометрии. Функция имеет значение в каждой точке пространства. Я делю усечку камеры на 3-ю сетку, каждый блок может быть спроецирован как пиксель. В каждом блоке я интегрирую функцию плотности и проверяю, превышает ли ее значение требуемое значение. Если да, то предполагается, что что-то существует в этом блоке и что пиксель, соответствующий этому блоку, визуализируется. Итак, теперь в моем рендерере я хочу передать функцию (которую я представляю строкой) графическому оборудованию вместо данных вершин в буферах вершин. это также подразумевает, что у вершинного шейдера не будет вершин для преобразования в однородное пространство клипа, а фрагментный шейдер не получит информацию о пикселях. вместо этого, теперь большая часть поиска и оценки происходит на пиксель.