2012-06-13 71 views
5

所以我製作了一個遊戲程序,需要幫助讓它更自動一些。C++圖像處理

該方案需要在圖像中,然後顯示它。我在OpenGL中通過紋理來做這件事。當我截取遊戲截圖時,通常大約是700x400。我將高度和寬度輸入到我的程序中,通過添加空白區域(原始圖像停留在左上角並一直走到(700,400),將圖像調整爲1024x1024(使其成爲POT紋理以實現更好的兼容性)其餘的只是空白;有沒有人知道這個術語?),然後將其加載到我的程序中並調整角點,以便只顯示(0,0)到(700,400)的部分。

這就是我如何處理圖像的顯示。現在,我想使這個自動。所以我會拍攝一張700x400的照片,將它傳遞給可以獲得圖像寬度和高度(700x400)的程序,通過添加空白區域將其重新調整爲1024x1024,然後加載它。

因此,沒有人知道一個C++庫能夠這樣做的?我仍然會手動截圖。

我使用的是簡單的OpenGL圖像庫(土),用於加載選擇圖片(.bmp),並將其轉換成一個紋理。

謝謝!

回答

1

你真的沒有加入空格,以正確顯示圖像調整。事實上,這是非常有效的方法,特別是因爲您以.bmp格式存儲圖像。

土壤能夠加載紋理時自動添加空格 - 也許只是嘗試加載文件原樣,而不做任何操作。

土壤文檔:

可以將圖像自動地重新縮放爲冪的2 下一個最大尺寸

可以負荷rectangluar紋理GUI元素或閃屏 (需要GL_ARB/EXT/NV_texture_rectangle)

無論如何,您不必使用紋理來顯示s上的像素creen。我認爲你沒有使用着色器進行渲染 - 如果它全部通過固定管道傳輸,就會有更簡單的功能glDrawPixels。請記住將您的SOIL電話改爲SOIL_load_image。 「

+0

」可以自動將圖像重新縮放到下一個最大的二次冪的大小「 - 我真的錯過了」自動「這個詞。 :D我會嘗試你所說的。謝謝! – Tuntuni

+0

我試圖加載它沒有調整大小,但它只是變得怪異。我很確定我的角落在他們的位置。圖像也變成了灰度,當我縮放它時,它獲得了一些顏色。 你可以給我任何在SOIL_load_image和glDrawPixels上的exmaples,或者一個鏈接嗎?謝謝。 – Tuntuni

+0

也許試試'SOIL_FLAG_POWER_OF_TWO'或'SOIL_FLAG_TEXTURE_RECTANGLE'。 –