[英]DeleteVertexShader dx8.1 to dx9 conversion
我目前正在嘗試將游戲轉換為使用 dx9 而不是 dx8。 我會說我非常接近完成它,但我有一些錯誤,我不完全知道如何處理 atm。
DeleteVertexShader
和DeletePixelShader
。我該如何處理它們? 到目前為止,我在 dx9 中找不到與它們等效的東西。 舊代碼示例: D3D_CHECKERROR(hr); hr = _pGfx->gl_pd3dDevice->DeletePixelShader(ulHandle);
渲染 state D3DRS_PATCHSEGMENTS
不再存在,它用於繪制補丁時每條邊的段數。 我需要用什么來代替它嗎? 我也找不到任何等價物。 代碼示例:
HRESULT hr = _pGfx->gl_pd3dDevice->SetRenderState( D3DRS_PATCHSEGMENTS, *((DWORD*)&fSegments));
這兩個問題是我與 atm 最矛盾的問題,所以任何幫助將不勝感激。
提前致謝!
在 Direct3D 9 中,頂點着色器和像素着色器將 COM 接口返回到着色器 object。 因此,只要 IUnknown 引用計數為 0,它就會被刪除。請參閱Microsoft Docs:使用 COM 編程 DirectX 。
“n-patch”和“rect/tri-patch”功能從未被廣泛支持或使用。 Direct3D 9 確實支持使用高階基元 (Direct3D 9) 的這些舊功能,但前提是硬件報告通過D3DDEVCAPS_NPATCHES
/ D3DDEVCAPS_RTPATCHES
支持。
您還可以查看舊版 D3DX9 中的一些 n-patch 支持,但您可能只需要為現代卡重寫此代碼。
請參閱Microsoft Docs:轉換為 Direct3D 9 。
請務必閱讀這篇博文。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.