Direct3D 10.1︰不相容?

Radeon HD 3000這一個新系列的顯示晶片,AMD最先支援下一個版本的Direct3D︰ Direct3D 10.1。但是微軟的這個新的API能做些甚麼?

不相容?

今年夏天當某些Direct3D 10.1的消息被洩漏出來的時候,一些網站出現了些許找麻煩的謠言; 這個新版本將會與舊版的不相容﹗忿怒的回應立即回響在整個網站上。事實上,微軟正在修補這些圍繞在Direct3D邊的雜音。的確,遊戲玩家必須接受這新版本的Direct3D將與以前的版本不相容而且它將會是針對最新的作業系統︰Vista。微軟雖然曾經如此保證過:這將不會使得現有API變成過時的東西。然而幾月以後,又談論到這是勢在必行的。對大多數人來說,真的是夠了。

Direct3D 10 SDK的demo

不過就和一般在網路上的情況一樣,這些都是空穴來風的消息,因為Direct3D 10.1 完全符合它先前舊的版本。不過讓我們更進一步去看看我們所謂相容於API的意思。直到第9個版本,各個版本的DirectX跟隨先前的版本一樣的模式,並且能向下相容;當你安裝一個新的DirectX 版本時,你能用更舊的版本玩遍你以前的遊戲。一樣的情況,我們可以開發一個支援DirectX 9界面的遊戲,但是只把它當DirectX 8的界面一樣在使用。此外,這允許程式開發者只須保持一組代碼支援兩種顯示卡;把對於顯示卡先進功能的支援放在一邊,如此就能完全控制DirectX 9。為了要能這樣做,程式設計師要從顯示卡裡存取真正有用的詳細清單。反之,這種相容性不再出現於Direct3D 10之中。為了確保更老的遊戲能在Vista上運作,微軟將兩種API都內建在它最後版本的作業系統中。

Windows Vista API

在相似情況之下,Direct3D 10的界面不允許去存取第9版的API。如果開發者希望一個遊戲能支援Direct3D 9和10,那他就得計畫為一個遊戲設計兩個不同的版本,這個情況和以往程式設計師想要支援OpenGL同時又支援Direct3D所做的事情是非常不一樣的。在這我們談論的是兩個不相容API的特殊情況。

反之,在只有Direct3D 10的顯示卡上建立一個Direct3D 10.1的界面是十分可能的,新的API帶來了更為縝密的超集合。在Direct3D 10裡所能發現到的一切也都可以在它的大哥裡發現一樣的東西。開發者的唯一的職責就是確保不會在Direct3D 10顯示卡上去呼叫Direct3D 10.1的功能,就是那些在舊版API裡頭的必需項目。

顯而易見,已經出現的Direct3D 10顯示晶片(G8x,G9x和R6x0) 並不支援最新的API的附加物件,這好像是沒有大腦似的而且光是這點就製造出了許多混亂。實際上關於更舊的顯示晶片的支援度,微軟曾說過他們承諾會保留在Direct3D 10裡頭關閉的特效…諸如此類的;然而現在這些特效一點都不存在,而是被微軟稱之為功能階層的玩意兒替換掉了。主要差別是不再需要確認每個功能都分別能被支援,而只是需要檢查功能階層是Direct3D 10或者Direct3D 10.1,這樣就足夠去確認是不是能被顯示晶片所支援了。


Google 廣告
廣告
Ads
的文章和評比
smartad
Recherches populaires