Я пишу простое приложение opengl с размером окна по умолчанию. В это окно я рисую некоторые объекты, используя VBO:
points = calc_objects()
vbo_id = GLuint()
glGenBuffers(1, pointer(vbo_id))
data = (GLfloat*len(points))(*points)
glBindBuffer(GL_ARRAY_BUFFER, vbo_id)
glBufferData(GL_ARRAY_BUFFER, sizeof(data), data, GL_STATIC_DRAW)
В настоящее время, когда пользователь изменяет размер окна opengl, все объекты остаются на месте и не меняются. Это ожидаемое поведение, и поэтому я исследую, как лучше всего изменить размеры объектов без их пересчета. Это вообще возможно? Могу ли я изменить размер данных непосредственно в VBO? Или мне нужно сначала пересчитать мои объекты и полностью заменить данные VBO? Размер моих объектов в настоящее время пропорционален моему начальному размеру окна и
поэтому объекты должны быть изменены в соответствии с новыми размерами окна. Какой самый простой способ сделать это?
РЕДАКТИРОВАТЬ: вот моя функция рисования:
glBindBuffer(GL_ARRAY_BUFFER, vbo_id)
glVertexPointer(2, GL_FLOAT, 0, 0)
glDrawArrays(GL_LINE_STRIP, 0, len(points)/2)