2015-11-06 4 views
4

Я хочу нарисовать линию в OpenGL, которая будет получать очень часто новые точки. Я хочу достичь того, что объект рисует линию позади него.opengl как рисовать динамическую линию?

enter image description here

Так что я должен сделать массив и добавлять все новые точки к нему (BufferData установлен GL_DYNAMIC_DRAW). А затем перерисуйте строку с помощью glDrawArrays. Тесселяция + ширина удара будет находиться внутри вершины?

Или есть лучший способ?

ответ

2

Добрый вечер :)

Хорошо после небольшого перерыва. Я финналы пришел к решению и хочу поделиться им: Идея состоит в том, чтобы построить точку текущей позиции после заданной задержки. Задержка времени определяет, насколько гладкой будет фактическая линия. Затем вам нужно будет вычислить 2 новых точки на основе построенной точки, которую оба умножают на заданную ширину.

О, и для этих участков вам также необходимо получить направление движения вашего объекта, чтобы вычислить правильные нормали.

На стороне OPENGL вы должны инициализировать сайз буфер фиксированной вершины

gl.glBufferData(gl.GL_ARRAY_BUFFER, 8 * self.maxPoints, None, gl.GL_DYNAMIC_DRAW) 
# 8 bytes 2 points = 1 plot 
# maxPoints amount of max plots 

объект, где вы будете загружать каждый кадр эти 2 точки (gl.glBufferSubData). Довольно легко ? не? позвольте мне сделать мой результат:

Sketch

Результат (Контролируя с WASD):

With Wireframe on

bigger time delay

small delay

Смежные вопросы