簡體   English   中英

DeleteVertexShader dx8.1 到 dx9 的轉換

[英]DeleteVertexShader dx8.1 to dx9 conversion

我目前正在嘗試將游戲轉換為使用 dx9 而不是 dx8。 我會說我非常接近完成它,但我有一些錯誤,我不完全知道如何處理 atm。

  1. Directx 9 中不再存在DeleteVertexShaderDeletePixelShader 。我該如何處理它們? 到目前為止,我在 dx9 中找不到與它們等效的東西。 舊代碼示例:

D3D_CHECKERROR(hr); hr = _pGfx->gl_pd3dDevice->DeletePixelShader(ulHandle);

  1. 渲染 state D3DRS_PATCHSEGMENTS不再存在,它用於繪制補丁時每條邊的段數。 我需要用什么來代替它嗎? 我也找不到任何等價物。 代碼示例:

    HRESULT hr = _pGfx->gl_pd3dDevice->SetRenderState( D3DRS_PATCHSEGMENTS, *((DWORD*)&fSegments));

這兩個問題是我與 atm 最矛盾的問題,所以任何幫助將不勝感激。

提前致謝!

  1. 在 Direct3D 9 中,頂點着色器和像素着色器將 COM 接口返回到着色器 object。 因此,只要 IUnknown 引用計數為 0,它就會被刪除。請參閱Microsoft Docs:使用 COM 編程 DirectX

  2. “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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM