1
我正在寫一個簡單的opengl應用程序的默認窗口大小。到這個窗口,我使用維也納組織繪製一些對象:如何在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)
除非我完全失去了一些東西 - 爲什麼不通過改變施加給他們的轉型調整你的對象頂點着色器? – 2012-03-18 18:09:06
我不認爲我正在使用頂點着色器 - 我已將我的繪圖功能添加到最初的發佈中。 – memyself 2012-03-18 18:11:16
好吧,請更改您設置的模型視圖轉換。 – 2012-03-18 18:13:03