首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DeleteVertexShader dx8.1到dx9转换

DeleteVertexShader dx8.1到dx9转换
EN

Stack Overflow用户
提问于 2021-12-19 18:19:26
回答 1查看 115关注 0票数 0

目前,我正在尝试将游戏转换为使用dx9而不是dx8。我想说,我已经接近完成了,但我有一些错误,我不知道如何处理atm。

  1. DeleteVertexShaderDeletePixelShader不再存在于directx 9中,我该如何处理它们呢?到目前为止,我还没有在dx9中找到任何类似于它们的东西。旧代码示例:

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

  1. 呈现状态D3DRS_PATCHSEGMENTS不再存在,它用于绘制修补程序时每个边缘的段数。我需要用什么东西替换它吗?我也找不到任何类似的东西。代码示例: HRESULT hr = _pGfx->gl_pd3dDevice->SetRenderState( D3DRS_PATCHSEGMENTS, *((DWORD*)&fSegments));

这两个问题是我对自动取款机最纠结的问题,因此任何帮助都将不胜感激。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2021-12-23 21:02:01

  1. 在Direct3D 9中,顶点着色器和像素着色器向着色器对象返回COM接口。因此,每当IUnknown引用计数为0时,它就会被删除。见Microsoft :用COM编程DirectX
  2. ‘n-补丁’和‘rect/三补丁’功能从来没有得到广泛的支持或使用。Direct3D 9确实支持这些遗留特性使用高阶原语(Direct3D 9),但前提是硬件报告通过D3DDEVCAPS_NPATCHES / D3DDEVCAPS_RTPATCHES提供支持。

您还可以查看旧版D3DX9中的一些n-修补程序支持,但是您可能只需要为现代卡重写这段代码。

Microsoft :转换为Direct3D 9

一定要阅读这篇博客文章

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70414170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档