2010-09-14 80 views
0

花了幾個小時尋找一個簡單的方法來添加一個圖像到用C++編寫的openGL應用程序,我失敗了,悲慘地。很明顯,其他人也有。OpenGL DevIL C++源代碼

我對OpenGL相當新穎,我用OpenGL使用DevIL編寫了自己的win32應用程序,你猜對了,我失敗了。 我可以讓DevIL工作的唯一方法是使用Glut,我不想使用或SDL或glaux.h

我在尋找的是代碼或C++中帶有OpenGL的簡單圖像加載器的教程和魔鬼,任何幫助將不勝感激。

+0

是如何魔鬼不工作?崩潰?鏈接器問題?沒有有用的顯示? – genpfault 2010-09-14 14:31:39

+0

沒有紋理繪製到屏幕上。它基本上與谷歌演示相同的代碼在這裏: – Jeraldo 2010-09-14 15:31:52

+0

http://pastebin.com/RBTajJyk – Jeraldo 2010-09-14 15:33:04

回答

1

如果您要求OpenGL使用地圖過濾,請務必give it mipmaps to filter with

此外,我很肯定glTexParameteri()glTexEnvf()只適用於當前綁定的紋理。

嘗試用這個替換您InitTextures()

Tex1 = ilutGLLoadImage("tex1.bmp"); 
glBindTexture(GL_TEXTURE_2D, Tex1); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 

Tex2 = ilutGLLoadImage("tex2.bmp"); 
glBindTexture(GL_TEXTURE_2D, Tex2); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 
+0

來自pastebin的代碼可以正常工作,我想用opengl複製代碼作爲win32應用程序,而不是使用過剩。 我真的不知如何去做,我看過的所有教程都包含過剩的內容,或者像使用glaux庫的NeHes教程。 http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=06 我想換掉那個教程中的devil庫的glaux lib函數,但是我不知道如何去做我對DevIL沒有正確的理解?可能嗎? – Jeraldo 2010-09-14 16:43:50