2012-02-05 3 views
0

Можно ли выводить файлы BSP из игр изнутри шейдеров? Возможно ли иметь VBO в шейдере или нужно ли его отображать на стороне клиента?Оказание BSP с VBO или шейдером? OpenGL

Также для VBOs имеет смысл создать массив видимых лиц из текущего PVS и усеченного конуса, а затем отобразить их партиями путем сопоставления текстур?

+0

Педантичное примечание: в OpenGL нет такой вещи, как «VBO». Существуют только буферные объекты, которые могут использоваться для хранения данных вершин. Или равномерные блоки. Или множество других вещей. –

ответ

2

Шейдер не может непосредственно провоцировать рендеринг. Он не может заставить OpenGL отображать некоторые данные. Шейдеры являются частью конвейера рендеринга, и этот конвейер идет в одну сторону; ему не разрешено зацикливаться.

В аппаратном обеспечении на основе GL 4.x шейдер теоретически может записывать данные в определенном формате, который будет считываться с помощью одной из функций «косвенного» рендеринга. Но клиентский код, CPU, по-прежнему должен выдать команду рисования.

Возможно, лучше сделать видимость на языке вычислений, таком как OpenCL. Шиндеры OpenGL способны на это, но они не очень хорошо разработаны, чтобы сделать это интуитивно понятным. OpenCL - это общая вычислительная система, и она предназначена для такого рода вещей.

0

Можно ли выводить файлы BSP из игр изнутри шейдеров?

С большим количеством PITA это возможно в системах класса OpenGL-4. Но почему? Как только вы начнете думать в этом направлении, вы делаете что-то принципиально неправильное. И я бы сказал, что такой рендерер BSP с чистым шейдером на текущем графическом процессоре был фактически опережен 10-летним GeForce2 и хорошо написанным клиентским кодом.

Помните люди: делать вещи в затенении=/=Высокая производительность

OpenGL никогда не было и никогда не будет самодостаточным движок рендеринга. Это всегда подразумевалось как API-интерфейс растрирования бэкэнда для специально написанного рендеринга.