2012-07-09 77 views
1

我在學習如何在OpenGL中渲染紋理時遇到了問題(從OpenGL第5版聖經)。問題是我無法顯示我的紋理。我使用自己編寫的函數從BMP文件加載它。BMP紋理不顯示

由於代碼相當長,我上傳了所有neccessery文件。您可以從here下載它。

編輯:我試過從提到的書(TGA加載描述那裏)複製代碼,它不工作。似乎在從文件加載圖像數據時加載Stuck(奇怪)。就我的問題而言,我認爲這並不重要。

+2

使用[SDL_image(http://www.libsdl.org/projects/SDL_image/),[土壤](http://www.lonesock.net/soil.html)或類似的圖書館。您不必親自編寫它,它會自動支持多種圖像格式。 – 2012-07-09 14:54:42

回答

4

有檢查問題的一般調試步驟。我將在下面列出它們,希望您能找到該錯誤(以及針對未來的讀者):

  • 該文件是否存在?文件是否按照格式正確讀取?你用OpenGL把它凝膠好了嗎?我的建議:不要自己搞砸這些東西。使用圖書館。有一個驚人的輕量級SOIL (Simple OpenGL Image library)
  • 您是否在初始化OpenGL之前加載紋理?這一直是我的問題,因爲我曾經「加載」並在構造函數(某些類中)中執行glBindTexture(..)。這些對象是在OpenGL被初始化之前創建的。
  • 你已啓用GL_TEXTURE_2D?檢查初始化代碼,使用:glEnable(GL_TEXTURE_2D)
  • 您是否正確使用四邊形或您想要的形狀來映射紋理?在此擴展(某種程度上)超出了範圍。那裏有很棒的tutorials
  • (看起來很愚蠢,但有時會發生)你是否用glColor3f(0,0,0)來發現對象?

可能會有更多的檢查,但這些是那些現在打我的頭

+0

優秀的答案!我不能讓自己更清楚。 – Oskar 2012-07-09 18:41:02

+0

顯然這個問題相當複雜。我的BMP加載和渲染函數一定是錯誤地編寫的,因爲交換到SOIL和擺脫所有_glColor_我終於設法顯示紋理。感謝幫助 :) – Robin92 2012-07-10 07:19:29