2013-07-21 37 views
-5

我使用OpenGL 4.0更新後,我有3個東西在我的場景,他們是 -

1 VBO平面
2-立方體貼圖
3- 3D模型[3ds/obj]
的OpenGL,屏幕不添加Assimp 3D模型

我正在使用Assimp庫導入3D模型,我爲導入模型而構建的代碼是在「TheCPlusPlusGuy」的youtube教程的幫助下完成的。

這是我面臨的問題,我可以在我的場景中渲染飛機,我可以在我的場景中渲染立方體貼圖,又名skyboxes,我可以渲染它們在一起。
但是當我渲染任何3D模型時,無論是.3ds還是.obj,屏幕都不會更新。即使我調整屏幕沒有得到更新。
這隻發生在我渲染3D模型時。我使用標誌並在運行時啓用繪製3D模型,程序運行良好,直到我渲染模型,一旦我渲染模型,模型本身不出現在屏幕上,但屏幕再次凍結。
我google了一下,但沒有人似乎有這樣的問題。

我的主要診斷是因爲我使用VBO飛機,立方體貼圖和3D模型我遇到此問題。

+1

發佈您有錯誤的代碼。程序在哪裏凍結? – GraphicsMuncher

回答

1

我忘了渲染plane->

glBindVertexArray(0); 

之後,該方案的工作就像一個魅力後,要做到這一點。

1

我正在使用Assimp在我的編輯器中導入模型,但Assimp僅用於讀取模型和網格數據,並且這些值以我自己的模型/網格格式存儲。我想我們都這樣做?我對Assimp沒有任何問題,並且我也被認爲應該在所有其他不透明物體之後渲染天空盒等,以便您可以做一些技巧來最小化渲染時間(天空盒應被視爲最遠的物體之一)。

我傾向於同意Bartek。 Assimp似乎與您遇到的問題無關,我會考慮重新設計您的渲染方法。

+0

我從來不是說Assimp是一個問題,我所說的是我在導入assimp模型時可能有錯誤。 – 2am

2

這裏有一個建議列表:

  • 使用維也納各組織是沒有問題的。也不使用Assimp。
  • 確保您已經在緩衝區中指定了正確數量的索引和原語並繪製調用,並且它們的格式正確。 OpenGL文檔可能對這些數字所需要的內容(字節,索引,三角形?)模糊不清,所以請確保完成。維基解釋這一點做得更好。
  • 您的模型是否真的超過了裝載階段?你嘗試過一個非常簡單的模型嗎?
  • 請確保您只加載一次模型(即不在渲染循環中,如果是這樣,有一種機制可以確保它只加載一次)。反覆告訴你的程序加載一個模型會使其運行速度非常緩慢,並冒着吃掉所有內存的風險。
  • 確保您已將模型從Assimp的數據結構正確地轉換爲您自己的模型。檢查值是否正確設置。加載一個OBJ並打印您正在複製的值 - 它們是否與.obj文件對齊?
  • 您在加載模型時是否有有效的OpenGL上下文?從Assimp加載不需要,但從數據結構到VBO。

我相信你已經完成了一些這些事情,但我也有棘手的時間來完成這項任務。一步一步來幫助你縮小問題範圍。