2010-05-20 85 views
1

Quartz2d對OpenGL ES的描述語言有多大的區別?Quartz2d矢量圖像vs OpenGL矢量描述?

看來他們是在描述功率相似......除了石英主要是2D和OpenGL是開箱3D的(但可進行2D聚焦)。

從2dQuartz映射到2d OpenGL ES的不同?我確定一些特定功能必須存在差異,可能會在一個與另一個不同的處理上有所不同......但要做一名翻譯?

任何人有OpenGL和Quartz2d有一定見解的經驗嗎?

回答

1

石英和OpenGL ES是兩個完全不同的動物。雖然他們都有一個基於C的API來處理狀態機,並將其引入到上下文中,但它們的目的是不一樣的。在Quartz中,您可以指定線條,貝塞爾曲線和二次曲線,弧線或矩形,以及填充,漸變和陰影/發光。在OpenGL ES中,您提供了生成場景的頂點,柵格紋理和光照信息。

他們是在特殊情況下都是有用的。您可以使用Quartz將二維靜態元素繪製到視圖,圖層或紋理中,然後使用Core Animation將該視圖或圖層放置在3-D空間中,或者使用OpenGL ES對紋理執行相同的操作。

與其嘗試在另一個API上疊加一個API,使用哪一個更適合你在做什麼,或者尋找一個像cocos2d這樣的框架,它可以讓你構建和動畫製作2D場景或Core Animation,你可以在其中做什麼Quartz繪製成一個圖層,但仍然使用一個很好的抽象API來移動這些圖層。

+0

Cocos似乎只是處理精靈......我尋找矢量能力和從矢量編輯程序(運動也如果可能) 似乎已經有一個Quartz2d和OpenGL ES之間的翻譯層,因爲它必須是無論如何,石英如何進入視野。我發現了一個讓我從矢量應用程序(flash)到Quartz 2d的途徑......我也想獲得動畫數據,並儘可能接近硬件級別。 – tbarbe 2010-05-21 00:14:00

+0

@tbarbe - 是的,您使用Quartz繪製矢量2D內容,然後將其柵格化爲Core Animation層,該層實際上是一個矩形OpenGL ES紋理的包裝。使用Quartz繪圖和Core Animation將爲您提供您想要的矢量繪圖和動畫,並使用最少量的代碼。通過下降到OpenGL ES,您可以獲得更好的性能,但這需要更多的代碼或使用像cocos2d這樣的框架。 – 2010-05-21 14:27:06