haXe開發中發現:在native也就是cpp目標中,用Graphics.beginBitmapFill()這個方法填充一個區域時,repeat參數不起作用,結果總是用邊緣像素填充了空白區域。
經過一番檢索與研究,發現這是OpenGL硬件渲染器的一個已知限制,如果紋理圖的邊長不是2的整數倍(如4, 16, 64, 256, 1024...)的話,就是這個結果。
有幾個解決方案可根據實際情況選用:
1. 強制NME采用軟件渲染器,方法是把顯示對象的cacheAsBitmap這個屬性置為true;另外在顯示對象上設置濾鏡filters也會導致NME采用軟件渲染
2. 放縮用來填充的位圖,令其邊長為2的整數倍
3. 讓美工准備圖時就事先處理成2的整數倍邊長
4. 自己用drawRect處理重復