我正在開發2D遊戲項目,並且我想將openGl紋理包裝在一個簡單的類中。使用libpng從128x128px.png(使用Alpha通道)讀取紋理。由於代碼量非常大,我使用了pastebin。OpenGL 2D紋理不起作用
的代碼文件:
- Texture類:http://pastebin.com/gbGMEF2Z
- PngReader類:http://pastebin.com/h6uP5Uc8(似乎工作好了,所以我刪除了說明)。
- 的OpenGL代碼:http://pastebin.com/PVhwnDif
爲了避免浪費您的時間,我將解釋代碼一點點:
Texture類:對於一個OpenGL紋理的包裝。函數
loadData
在gl中設置紋理(這是我懷疑不起作用的函數)。OpenGL的代碼:所述
debugSetTexture
函數將紋理,其中在graphicsDraw()
函數中使用的變量temp
。這是因爲它與main()
不在同一個源文件中。在graphicsMainLoop()
函數中,我使用Fork()
函數,它實際上調用fork()
,並存儲衍生進程的pid
。
從main()
,這是我做的:
Strategy::IO::PngReader reader ("/cygdrive/c/Users/Tibi/Desktop/128x128.png");
reader.read();
grahpicsInit2D(&argc, argv);
debugSetTexture(reader.generateTexture());
graphicsMainLoop();
reader.close();
我試着叫gDEBugger的應用程序,並在貼圖瀏覽器,有生成的質感,但尺寸是0x0px。
我懷疑問題發生在使用Texture :: loadTexture()加載紋理時。
爲什麼使用Cygwin?你在Cygwin環境中運行程序嗎? – AndiDog 2012-02-22 19:17:10
「我懷疑Texture :: loadData()函數不起作用」......所以你試着在Texture類的最小范例中對相同的數據做同樣的事情?那樣有用嗎? – Bart 2012-02-22 20:01:54
@AndiDog這是Eclipse配置的方式......我沒有安裝mingw,我不確定libpng是否存在於Windows上。 – Tibi 2012-02-22 20:21:19