2012-11-15 47 views
-1

這更像是一個有直接答案的討論問題。我在OpenGL中開發了一個相當簡單的場景,並且遇到了我正在使用的類結構的問題。我有一個'Primitive'基類,其中我構建了派生類,如Cube,Tetrahedron,Sphere等。基類包含關於對象的所有數據,例如頂點和法線。從這裏,我有幾個從Model類(例如Fence)派生出來的類,它們包含幾個排列成正確結構的立方體。我將所有的頂點和法線存儲在堆中,並且需要一種方法來釋放內存。但是,當試圖釋放Primitive的構造函數中的內存時,我遇到了一個錯誤。OpenGL中的內存分配

我認爲這是因爲,當使用GLUT時,模型在glutMainLoop()之外定義,因此它們在程序完成使用前超出了範圍。有沒有更有效的方法來管理OpenGL中的頂點數組的內存?或者有解決這個問題的方法嗎?

+0

glutMainLoop永不返回。你究竟問什麼? –

+0

如果你打算向某人投下疑問,請給他們禮貌的說爲什麼 – doron

+0

@doron我剛剛投票結束爲不是一個真正的問題,沒有投票下來。無論如何,人們可以自由投票而不必解釋爲什麼 –

回答

1

而不是使用客戶端緩衝區爲您的模型,使用serverside緩衝區。這些使用glGenBuffer glBindBuffer and glBufferData進行綁定。這些API會將緩衝區上載到服務器內存中,一旦上傳,您就可以立即釋放您的數據。

較新版本的OpenGL具有頂點數組對象(VAO),可能也會對您有所幫助。