2013-07-02 106 views
0

林與SFML和C++,並有一個問題打轉轉,加載紋理時,必須指定它的目錄,像這樣:加載圖像從一個相對路徑在SFML

sf::Texture myTexture; 
if(!(myTexture.loadFromFile("C:\\Folder\\image.png"))); 

但分配我的比賽怎麼樣時,我會確定用戶將遊戲下載到同一個驅動器上,並且image.png可能位於E:驅動器上,而不是C:驅動器上。我想知道一種在C++中定位圖像文件而不必指定其目錄的方法。這裏是理論代碼

if(!(myTexture.loadFromFile(@"image.png"))); 

所以現在無論這個圖像位於何處我的遊戲可以找到圖像。我唯一擔心的是有人可能已經有一個名爲image.png的文件在那臺計算機上,所以爲了這個我會給圖像文件非常抽象和獨特的名稱,以防止重複。

+0

相對路徑是你所需要的 – Borgleader

+0

或/ usr /共享/ yourapp是你需要什麼,一個只是可能無法找到它的窗口,但可能的窗戶有一些默認位置來存儲數據所有用戶也是如此。這可能有幫助:http://blogs.msdn.com/b/patricka/archive/2010/03/18/where-should-i-store-my-data-and-configuration-files-ifi-i- target-multiple-os-versions.aspx – hetepeperfan

回答

1

從相對路徑加載圖像(以及聲音,字體等)也適用。

如果您擔心潛在的文件名衝突,請使用包含您所有資產的文件夾分發您的遊戲。例如yourGame_resources,放置在與您的可執行文件相同的級別。負載由

myTexture.loadFromFile("yourGame_resources/image.png") 
+0

謝謝你的答案真的幫助了很多。 – user27483