1
我正在學習如何使用allegro庫,並在使用set_gfx_mode
函數時,如果我使用GFX_AUTODETECT_FULLSCREEN
作爲第一個參數,那麼在運行編譯後的應用程序時,窗口將全屏顯示,跑步,所有的顏色都會改變。使用任何其他圖形模式都不會發生,但在兩臺獨立的機器上,只有在切換到全屏模式後,顏色纔會發生變化。有沒有其他人看到過這種情況?我根本找不到關於這個問題的任何討論。Allegro在全屏模式下的顏色變化
我使用的是預編譯的快板4.4.2庫Visual Studio 2010和運行Windows 7的
我有一種感覺,這可能是Windows 7和舊版本的快板之間的兼容性問題,這就是爲什麼我在原始文章中提到這一點。按照您的建議,我使用set_color_depth做了測試,結果有點奇怪。我使用makecol(255,0,0)以及(0,255,0)和(0,0,255)來測試普通的紅色綠色和藍色,同時嘗試早些時候解決這個問題,這些顏色似乎很好地顯示顏色深度爲32,但所有預製的顏色(即顏色0-15)都變成純黑色,直到我幾乎看不到它們。不知道該怎麼做。 – Alex
@Alex,不知道你的意思是「預製」的顏色。在15/16/24/32位模式下,您必須使用'makecol()'獲取當前視頻卡的正確常量。這必須在設置圖形模式後完成。常量不能被硬編碼或預設,因爲它取決於驅動程序以及它如何編碼像素顏色。 (除了使用GFX_GDI窗口驅動程序,已知8位模式不能很好地工作。) – Matthew
好的,這很有道理。當我說預先製作的顏色時,我的意思是可以使用常量的顏色,當您使用幾乎所有具有「int color」參數的函數時,0代表黑色,15代表白色,各種顏色指定爲1-14。不過,8位色彩似乎會導致這個問題。當我將一個窗口化的程序分配給32位時,它看起來完全一樣,不管它是窗口還是全屏,所以這解決了我的問題。我從現在開始必須使用makecol。 – Alex