clear與erase的原理與區別
阿新 • • 發佈:2019-01-08
剛才把作業的B題做完。
第一次提交WA,因為輸出格式中有空格沒有注意到 -.-
第二次提交WA50%,然後新增上A.clear()才正確了。
藉此學習一下clear()與erase().
clear:(百度到的一篇部落格,但似乎是windows程式設計用的。暫且複製過來。)
功能:將一些可用的Buffer(緩衝區)清理乾淨。
函式原型:
HRESULT Clear(DWORD Count, const D3DRECT *pRects, DWORD Flags,
D3DCOLOR Color, float Z, DWORD Stencil);
例: pd3dDevce->clear(0,NULL,D3DCLEAR_TARGET|D3DCLEAR_ZBUFFER ,D3DCOLOR_ARGB(0,45,50,170),1.0F.0);
第一個引數:告訴系統有多少個矩形區域要被clear。
第二個引數:說明這些要被clear的矩形陣列的指標。
注:如果clear的範圍是整個buffer,那麼第一個引數值只要填0,第二個引數填NULL即可。
第三個引數:用來指定要被clear的是哪些buffer(可以是三個Buffer 的組合)。
注:D3D裡相對於視窗畫面用到的buffer有三種:color buffer 、depth buffer 、stencil buffer ;color buffer 用來呈現視窗上每個pixel的顏色值,
也就是實際見到的彩色畫面,color buffer 又稱Render Target;Depth Buffer又稱Z Buffer;Stencil Buffer 是模板 、鑄板的意思。
第四個引數:指定給Color Buffer的背景色;
第五個引數:給Depth Buffer 用的,只要pixel的Z值介於0~1,就會填入Depth Buffer;
第六個引數:指定給Stencil Buffer,上例中沒用到Stencil buffer ,所以指定為0;
erase:
erasearray: array 引數是要清除的陣列變數的名稱。 iterator erase( iterator pos ); //刪除pos指向的字元, 返回指向下一個字元的clear直接將所有的清除。