2012-01-12 46 views
2

是否有任何種類的應用程序,工具,庫,...從矢量圖像生成OpenGL函數? 爲了避免任何誤解:我不想在我的2D OpenGL項目中渲染類似SVG文件的東西,我想在我最喜歡的矢量應用中創建矢量圖並將其轉換爲OpenGL代碼,而不是通過代碼創建。這將節省大量的時間。從矢量圖像的OpenGL自動代碼生成器

+0

如果不是SVG那麼是什麼?一個Adobe Illustrator .ai文件? – jowo 2012-01-12 03:55:25

+0

重點是我「不要」「渲染」「文件」,不管它是什麼 – 2012-01-12 04:08:50

+0

我的意思是你想從哪個文件格式轉換而來。你將需要一種格式來保存你的矢量應用程序。然後是一個轉換器,將它轉換成一個容易加載到OpenGL頂點緩衝區的文件。 – jowo 2012-01-12 07:42:52

回答

5

不生成OpenGL代碼。將頂點數據以可以加載到VBO的形式存儲。這是確定生成的數據碼 - 是這樣的:

struct { float position[3]; float texcoord[2]; float color[4]; } vertices[] = 
{ 
    // Auto-gen code here... 
    { {1, 1, 0}, {0, 1}, {1, 0, 1, 1} }, 
    ... 
}; 

但你可能會發現,它只是作爲簡單的(和更快的編譯)如果你的內存直接從二進制數據文件映射數據。當然,代碼版本的優點是可以在您的可執行文件中生存,而不必亂用應用程序資源,這反過來又具有不讓您在沒有重新編譯的情況下更改矢量圖像的缺點。

+0

tanx 4你好,問題是形狀比這更復雜,而且它們會變成動畫。您的解決方案非常聰明,適用於某些靜態項目。不幸的是不是我的:( – 2012-01-12 04:16:55

+0

@ mk.persia:不知道具體情況,很難說它們是否適合你的問題,但我會提出一些你應該考慮的問題:1)維也納國際組織不限制你可以畫什麼相對於即時模式;它們主要提供了一種不同的方式來存儲頂點數據(儘管您可能需要其他數據結構來識別陣列的哪些部分表示不同的形狀等)。 2)VBOs支持動態變化的數據。 – 2012-01-12 04:31:38

+0

@MarceloCantos:你能否提供一個pt的例子。 2)? – Rekin 2012-01-12 08:54:15