估計大家可能現在對stage3d中的一些新增的類有些模糊,很多人看到flash.display3d這個包中的一大堆陌生的單詞有些膽怯。其實大家不需要這麼緊張,如果你仔細翻看最新的api文件的話,你還是能夠看到,其中大部分類都定義了一些常量。而我們真正需要的功能類就只有少數的幾個,如果你非要精簡到最簡單的話,那麼你只需要4個類即可完成乙個最簡單的demo。
這四個類分別是:context3d,vertexbuffer3d,indexbuffer3d,program3d。實際上如果你不考慮貼圖的話,這四個類基本上可以稱得上時stage3d的四大天王了。那麼如何正確使用這寫stage3d的api呢?下面就來為大家介紹一下如何開啟stage3d功能。因為看到很多朋友在一開始接觸stage3d的時候無法將舞台正確的例項化,但是錯誤的工作流不會引發執行時錯誤,這也就導致大家在學習的時候摸不到頭腦,總會認為是在agal上面出現問題,比較我們現在還無法在gpu執行時將暫存器中的資料trace出來。好了我們來看看如何初始化這部分功能的吧。
由於我們對於stage3d的程式設計的目的最終都是視覺化,所以我們不得不在製作時考慮一下關於stage的問題,這就需要我們在一開始就檢測stage是否初始化完成,不要存在疑惑。很多人覺得stage在程式一開始執行的時候就會第一次被例項化並且建立出來,實際上這樣做是相當危險的。
所以我們第一部分的**應該使用如下語句:
1 //偵聽舞台建立
2 this.addeventlistener(event.added_to_stage,init);
不必擔心,這個**是早在as3出現的時候就一起出現的了。如果你對這個事件還是非常陌生,或者說一知半解,那麼你可以翻翻我們偉大的api文件,裡面會告訴你關於它的所有秘密。
當我們事件監聽觸發之後,我們就可以放手來選擇我們想使用的stage3d層了,這裡需要說明一下,在大部分機器中我們都能正常的使用4個stage3d圖層,但是考慮到目前這些圖層的特性和環境的因素,我還是推薦大家預設使用編號為0的這個stage3d圖層,以免發生不必要的意外。建立並監聽stage3d是否啟動,請看下面**:
01 //舞台建立相應函式
02 private function init( evt:event ):void
03 ok!通過這樣幾句簡單的**,我們在執行的時候就可以安全的啟動gpu加速功能了,那麼在啟動之後我們能做什麼呢?一句話總結:把你的3d夢想變成現實!
為了驗證我們gpu的一些資料,我們僅僅做了乙個非常簡單的**就是將圖形庫驅動程式型別列印出來。**如下:
1 //stage3d啟動成功響應事件
2 private function stage3d_scene_create_headler( evt:event ):void
3 由於我這裡使用的是mac機器,所以列印出的內容為:
your stage3d is created!
graphics library driver:opengl (direct blitting)
01 package
02 29 //舞台建立相應函式
30 private function init( evt:event ):void
31 40 //stage3d啟動成功響應事件
41 private function stage3d_scene_create_headler( evt:event ):void
42 49 }
看看自己顯示卡是否支援stage3D 加速?
今晚本來很早就睡覺,結果真是白費了心機,原本顯示卡都支援shader 2.0 結果還是發現stage3d 加速不到一直都是用軟加速,更新了顯示卡驅動還是老樣子,但是發現了這個小問題,乙個好的告訴我,其實很多支援dx9.0的顯示卡其實都支援的,只是為什麼開啟不到,這個真是很疑惑有一些說是驅動的bug,...
看看自己顯示卡是否支援stage3D 加速
分享一下我老師大神的人工智慧教程。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!今晚本來很早就睡覺,結果真是白費了心機,原本顯示卡都支援shader 2.0 結果還是發現stage3d 加速不到一直都是用軟加速,更新了顯示卡驅動還是老樣子,但是發現了這個小問題,乙個好...
Stage 3D 結緣 效能對比及相關開發框架推薦
12年的時候,有篇這樣的採訪報道 當時的flash還是屬於上公升階段,朝氣蓬勃的 stage3d,workers,alchamy等技術都是新技術 雖然2017年還在用flash的我,但是3d技術相通性還是挺高的 希望越來越好 摘抄 廖誠 flash player 11.4和air3.4 提供了乙個重...