精华内容
下载资源
问答
  • D3DERR内容详细翻译

    千次阅读 2010-11-01 19:34:00
    D3DERR <br /> 用于返回Direct3D相关的错误信息。  下面这个列表是可以通过 Direct3D 方法返回的值的列表。返回的各值的说明请参阅列表解释中的描述。 <br /> 1typedef enum D3DERR 2...

    D3DERR

        用于返回Direct3D相关的错误信息。

        下面这个列表是可以通过 Direct3D 方法返回的值的列表。返回的各值的说明请参阅列表解释中的描述。

     

    1 typedef enum D3DERR
    2 {
    3 D3DOK_NOAUTOGEN,
    4 D3DERR_CONFLICTINGRENDERSTATE,
    5 D3DERR_CONFLICTINGTEXTUREFILTER,
    6 D3DERR_CONFLICTINGTEXTUREPALETTE,
    7 D3DERR_DEVICEHUNG,
    8 D3DERR_DEVICELOST,
    9 D3DERR_DEVICENOTRESET,
    10 D3DERR_DEVICEREMOVED,
    11 D3DERR_DRIVERINTERNALERROR,
    12 D3DERR_DRIVERINVALIDCALL,
    13 D3DERR_INVALIDCALL,
    14 D3DERR_INVALIDDEVICE,
    15 D3DERR_MOREDATA,
    16 D3DERR_NOTAVAILABLE,
    17 D3DERR_NOTFOUND,
    18 D3D_OK,
    19 D3DERR_OUTOFVIDEOMEMORY,
    20 D3DERR_TOOMANYOPERATIONS,
    21 D3DERR_UNSUPPORTEDALPHAARG,
    22 D3DERR_UNSUPPORTEDALPHAOPERATION,
    23 D3DERR_UNSUPPORTEDCOLORARG,
    24 D3DERR_UNSUPPORTEDCOLOROPERATION,
    25 D3DERR_UNSUPPORTEDFACTORVALUE,
    26 D3DERR_UNSUPPORTEDTEXTUREFILTER,
    27 D3DERR_WASSTILLDRAWING,
    28 D3DERR_WRONGTEXTUREFORMAT,
    29 E_FAIL,
    30 E_INVALIDARG,
    31 E_INVALIDCALL,
    32 E_NOINTERFACE,
    33 E_NOTIMPL,
    34 E_OUTOFMEMORY,
    35 S_OK,
    36 } D3DERR, *LPD3DERR;

     

    枚举的常量:

     

    D3DOK_NOAUTOGEN
    这是一个成功的代码。但是,这种格式不支持纹理的自动生成。这意味着资源创建将会成功,但纹理色阶将不会自动生成。

    D3DERR_CONFLICTINGRENDERSTATE
    与当前设置的渲染状态不能同时使用。

    D3DERR_CONFLICTINGTEXTUREFILTER
    与当前纹理筛选器不能同时使用。

    D3DERR_CONFLICTINGTEXTUREPALETTE
    与当前纹理不能同时使用。

    D3DERR_DEVICEHUNG
    设备返回此代码是由于操作系统重置了硬件适配器。大多数应用程序应当销毁该设备,并退出。应用程序必须继续应销毁所有视频内存对象 (表面,纹理,状态块等),并调用 Reset() 将该设备的重置为默认状态。如果应用程序随后继续以同样的方式渲染,设备将返回此状态。

    D3DERR_DEVICELOST
    设备已经丢失,但不能在这个时候被重置。因此,渲染是不合理的。一个Direct 3D设备对象而不是这个返回的代码引起的硬件适配器被操作系统重置。删除所有视频内存对象 (表面、 纹理、 状态块),并调用 Reset() 以返回到设备默认状态。如果应用程序继续渲染而不重置,渲染调用将失败。

    D3DERR_DEVICENOTRESET
    设备已丢失,但在这个时候可以重置。

    D3DERR_DEVICEREMOVED
    硬件适配器已被删除。应用程序必须销毁该设备、 进行枚举的显卡和创建另一个 D3D 设备。如果应用程序无需调用 Reset 继续渲染,渲染调用将失败。

    D3DERR_DRIVERINTERNALERROR
    内部驱动程序错误。当收到此错误时应用程序应销毁,并重新创建该设备。调试此错误的提示请参阅驱动程序内部错误 (Direct3D 9)。

    D3DERR_DRIVERINVALIDCALL
    未使用。

    D3DERR_INVALIDCALL
    方法调用无效。例如一个方法的参数的无效指针。

    D3DERR_INVALIDDEVICE
    请求的设备类型不是有效的。

    D3DERR_MOREDATA
    可支持比指定的缓冲区大小更多的有效数据。

    D3DERR_NOTAVAILABLE
    此设备不支持查询的技术。

    D3DERR_NOTFOUND
    找不到的请求的项目。

    D3D_OK
    没有错误产生。

    D3DERR_OUTOFVIDEOMEMORY
    Direct3D的没有足够的显存来执行操作。该设备使用一个场景中的更多资源不能同时容纳视频内存。IDirect3DDevice9::Present、 IDirect3DDevice9Ex::PresentEx 或 IDirect3DDevice9Ex::CheckDeviceState 可以返回此错误。恢复类似于 D3DERR_DEVICEHUNG,虽然该应用程序可能需要降低其每个帧内存使用情况,并且为了避免再发生该错误。

    D3DERR_TOOMANYOPERATIONS
    这个应用程序请求设备支持更多的纹理过滤操作。

    D3DERR_UNSUPPORTEDALPHAARG
    该设备不支持alpha通道中指定的纹理混合的参数。

    D3DERR_UNSUPPORTEDALPHAOPERATION
    该设备不支持alpha 通道中指定的纹理混合的操作 。

    D3DERR_UNSUPPORTEDCOLORARG
    该设备不支持指定的纹理混合的颜色值的参数。

    D3DERR_UNSUPPORTEDCOLOROPERATION
    该设备不支持指定的纹理混合操作的颜色值。

    D3DERR_UNSUPPORTEDFACTORVALUE
    该设备不支持指定的纹理因子的值。未使用; 提供仅以支持较旧的驱动程序。

    D3DERR_UNSUPPORTEDTEXTUREFILTER
    该设备不支持指定的纹理过滤器。

    D3DERR_WASSTILLDRAWING
    这表明之前的位传递操作所传递的信息或表面是不完整的。

    D3DERR_WRONGTEXTUREFORMAT
    纹理表面的像素格式不正确。

    E_FAIL
    Direct3D子系统内发生未确定的错误。

    E_INVALIDARG
    一个无效的参数传递给该函数的返回值。

    E_INVALIDCALL
    方法调用是无效的。例如,一个方法的参数,可能有一个无效值。

    E_NOINTERFACE
    没有可用的对象接口。

    E_NOTIMPL
    未执行。

    E_OUTOFMEMORY
    Direct3D 无法分配足够的内存来完成调用。

    S_OK
    没有错误产生。

    备注:

    错误代码是由负值表示,并且不能进行组合使用。
    其它的返回代码包含在 S_PRESENT 中。
    这段功能代码 _FACD3D 用于生成错误代码 ,如同下面的宏代码。

     

     

    1 // Direct3D Errors
    2 # define D3DERR_UNSUPPORTEDFACTORVALUE MAKE_D3DHRESULT(2079)
    3 # define D3DERR_WASSTILLDRAWING MAKE_D3DHRESULT(540)
    4
    5 # define _FACD3D 0x876 / / Direct3D 设备代码
    6 # define MAKE_D3DHRESULT (code MAKE_HRESULT (1,_FACD3D,code
    7 # define MAKE_D3DSTATUS (code MAKE_HRESULT (0,_FACD3D,code)

     

    展开全文
  • 运行一些游戏会提示DirectX找不到,错误或者D3DERR_NOTAVAILABLE 卸载显卡驱动后,游戏正常. 但是,好想安装显卡驱动啊. 解决办法 重新安装BootCamp: https://www.iplaysoft.com/bootcamp.html 可能的原因 猜测...

    现象

    在Macbook上安装WINDOWS10以后,安装完显卡驱动.
    运行一些游戏会提示DirectX找不到,错误或者D3DERR_NOTAVAILABLE
    卸载显卡驱动后,游戏正常.
    但是,好想安装显卡驱动啊.

    解决办法

    重新安装BootCamp: https://www.iplaysoft.com/bootcamp.html

    可能的原因

    猜测显卡驱动需要使用Apple定制的Intel驱动而不是Intel通用驱动

    展开全文
  • HR(D3DX10ComputeNormalMap(SrcTex, D3DX_NORMALMAP_MIRROR, D3DX_CHANNEL_GREEN, 10.0f, DestTex)); HR(D3DX10SaveTextureToFile(DestTex, D3DX10_IFF_DDS, saveFile)); } 跟踪到第一句时,纹理对象是加载并...
  • 我用的是一台虚拟机,代码如下,传递的参数是 InitD3D(hInstance, Width, Height, true, D3DDEVTYPE_REF, &Device),网上搜了下,说可能是d3dpp内容错误所致,但我实在看不出来错在哪里? bool d3d::InitD3D( ...
  • d3d错误

    千次阅读 2011-09-06 17:38:45
    switch (_Error) {  case D3DERR_WRONGTEXTUREFORMAT :  return _T("D3DERR_WRONGTEXTUREFORMAT");  case D3DERR_UNSUPPORTEDCOLOROPERATIO
      switch (_Error) {
      case D3DERR_WRONGTEXTUREFORMAT    :
       return _T("D3DERR_WRONGTEXTUREFORMAT");
      case D3DERR_UNSUPPORTEDCOLOROPERATION   :
       return _T("D3DERR_UNSUPPORTEDCOLOROPERATION");
      case D3DERR_UNSUPPORTEDCOLORARG    :
       return _T("D3DERR_UNSUPPORTEDCOLORARG");
      case D3DERR_UNSUPPORTEDALPHAOPERATION   :
       return _T("D3DERR_UNSUPPORTEDALPHAOPERATION");
      case D3DERR_UNSUPPORTEDALPHAARG    :
       return _T("D3DERR_UNSUPPORTEDALPHAARG");
      case D3DERR_TOOMANYOPERATIONS    :
       return _T("D3DERR_TOOMANYOPERATIONS");
      case D3DERR_CONFLICTINGTEXTUREFILTER  :
       return _T("D3DERR_CONFLICTINGTEXTUREFILTER");
      case D3DERR_UNSUPPORTEDFACTORVALUE   :
       return _T("D3DERR_UNSUPPORTEDFACTORVALUE");
      case D3DERR_CONFLICTINGRENDERSTATE   :
       return _T("D3DERR_CONFLICTINGRENDERSTATE");
      case D3DERR_UNSUPPORTEDTEXTUREFILTER  :
       return _T("D3DERR_UNSUPPORTEDTEXTUREFILTER");
      case D3DERR_CONFLICTINGTEXTUREPALETTE  :
       return _T("D3DERR_CONFLICTINGTEXTUREPALETTE");
      case D3DERR_DRIVERINTERNALERROR    :
       return _T("D3DERR_DRIVERINTERNALERROR");
      case D3DERR_NOTFOUND      :
       return _T("D3DERR_NOTFOUND");
      case D3DERR_MOREDATA      :
       return _T("D3DERR_MOREDATA");
      case D3DERR_DEVICELOST      :
       return _T("D3DERR_DEVICELOST");
      case D3DERR_DEVICENOTRESET     :
       return _T("D3DERR_DEVICENOTRESET");
      case D3DERR_NOTAVAILABLE     :
       return _T("D3DERR_NOTAVAILABLE");
      case D3DERR_OUTOFVIDEOMEMORY    :
       return _T("D3DERR_OUTOFVIDEOMEMORY");
      case D3DERR_INVALIDDEVICE     :
       return _T("D3DERR_INVALIDDEVICE");
      case D3DERR_INVALIDCALL      :
       return _T("D3DERR_INVALIDCALL");
      case D3DERR_DRIVERINVALIDCALL    :
       return _T("D3DERR_DRIVERINVALIDCALL");
      case D3DERR_WASSTILLDRAWING     :
       return _T("D3DERR_WASSTILLDRAWING");
      case D3DOK_NOAUTOGEN      :
       return _T("D3DOK_NOAUTOGEN");
      case D3DERR_DEVICEREMOVED     :
       return _T("D3DERR_DEVICEREMOVED");
      case S_NOT_RESIDENT       :
       return _T("S_NOT_RESIDENT");
      case S_RESIDENT_IN_SHARED_MEMORY   :
       return _T("S_RESIDENT_IN_SHARED_MEMORY");
      case S_PRESENT_MODE_CHANGED     :
       return _T("S_PRESENT_MODE_CHANGED");
      case S_PRESENT_OCCLUDED      :
       return _T("S_PRESENT_OCCLUDED");
      case D3DERR_DEVICEHUNG      :
       return _T("D3DERR_DEVICEHUNG");
      case E_UNEXPECTED       :
       return _T("E_UNEXPECTED");
     }
    展开全文
  • d3d设备丢失

    2011-03-30 14:43:00
    丢失后,所有继承自IUnknown的方法仍可以继续正常正作,除了Present()会返回D3DERR_DEVICELOST错误代码。处理设备丢失:在重设(reset)丢失的设备之前,必须重新创建所有相关的资源(包括显存!)。在设备丢失后,应...
    设备丢失的典型情况:图形显示丢失焦点,例如按下alt+tab键,或者弹出一个系统对话框;调用Reset接口函数的任何错误也会导致设备丢失。丢失后,所有继承自IUnknown的方法仍可以继续正常正作,除了Present()会返回D3DERR_DEVICELOST错误代码。

     

    处理设备丢失:在重设(reset)丢失的设备之前,必须重新创建所有相关的资源(包括显存!)。在设备丢失后,应查询是否可以将设备恢复(restore) 到工作状态。如果不能,则等行直到设备可以恢复。如果丢失的设备可以恢复,则在恢复之前程序需要销毁所有的显存资源和所有的交换链(swap chains),然后调用Reset()函数恢复设备。Reset函数是设备丢失后设备对象(LPDIRECT3DDEVICE9 device)唯一可以调用的函数。但是,一旦应用程序释放了所有D3DPOOL_DEFAULT内存资源,包括由函数CreateRenderTarget()与CreateDepthStencilSurface()创建的资源,Reset()的调用也将失败.

    大多情况下,DIRECT3D设备对象的许多方法并不返回设备是否丢失的消息,程序可以继续调用图形渲染函数,例如DrawPrimitive(),而不会接收到任何设备已经丢失的消息.在内部,这些操作将被抛弃,直到设备恢复到工作状态.

    在设备丢失后,程序中可以通过调用TestCooperativeLevel()接口函数确定设备是否能够恢复.若返回D3D_OK代码,表示设备可以恢复;若返回D3DERR_DEVICELOST代码,则表示目前设备还不能够被恢复.

     

    锁定操作:设备丢失后,D3D在内部已经做了大量的工作确保锁定操作成功.但是不能保证在锁定操作期间显存的内容是准确无误的,只能保证不会返回错误代码.这样应用程序就可以继续工作,而不管设备是否丢失.当然,这时并不会渲染出任何图形.

     

    资源:在设备丢失时,设备与显卡的内存不再相关联,因此,显存里的资源将全部被销毁,必须全部重新创建.而在设备丢失期间,对资源空间的分配也只能在内存上实现,无法在显存上分配内存空间.这些假的表面资源看上去允许正常锁定与复制操作,直到调用present函数会发现设备已经丢失.在从设备丢失状态恢复到正常值时,所有视频内存必须被释放,意味着应用程序需要释放所有由CreateAdditionalSwapChain()函数所创建的交换链和所有D3DPOOL_DEFAULT内存类型的资源,而不用释放D3DPOOL_MANAGED和D3DPOOL_SYSTEMMEM内存类型的资源.(因显存里那些资源可能在设备丢失时被改动过了,必须释放后重新申请,并载入).

     

    有关设备丢失的返回数据:ValidateDevice()确认硬件一次渲染纹理混合和渲染状态的能力,如果设备丢失,它会返回D3DERR_DEVICELOST; D3D允许显存资源数据到系统内存的传输,如果设备丢失,会导致传输的失败. IDirect3DQuery9::GetData()可指定FLUSH标记,如果丢失设备,它也会返回D3DERR_DEVICELOST; 另外,既然设备丢失时没有主表面,那么调用Direct3DDevice9::GetFrontBufferData()也会失败. 因为设备丢失,无法创建后备缓冲,故CreateAddtionalSwapChain()也会失败.这些情况再加上Presnet(), TestCooperative(), Reset(),只会在设备丢失时出现.

     

    可编程渲染器:在D3D9中,设备从丢失到正常时,VS与PS不需要重新创建,D3D能自动恢复它们.在以前的版本中则需要重新创建.

    转载于:https://www.cnblogs.com/lancidie/archive/2011/03/30/1999891.html

    展开全文
  • DX锁屏后设备的恢复

    千次阅读 2012-12-25 10:40:01
    DX程序,运行时,锁屏后,再进入,就发现画面卡主了。 实际上是设备没有恢复的缘故。... if (hr == D3DERR_DEVICELOST) { // 设备丢失 } else if (hr == D3DERR_DEVICENOTRESET) { //
  • DXUT框架剖析(8)

    千次阅读 2011-12-06 21:57:06
    Direct3D API的设计使程序能比较容易地处理各种错误,尽管大多数Direct3D API函数返回HTRSULT值,但只有一部分函数返回设备错误,如D3DERR_DEVICELOST或D3DERR_DRIVERINTERNALERROR。但是通常的Direct3D应用程序使用...
  • DXUT框架剖析(8)

    2019-09-19 12:39:32
    Direct3D API的设计使程序能比较容易地处理各种错误,尽管大多数Direct3D API函数返回HTRSULT值,但只有一部分函数返回设备错误,如D3DERR_DEVICELOST或D3DERR_DRIVERINTERNALERROR。但是通常的Direct...
  • D3DERR_INVALIDCALL';CreateDevice failed: 'D3DERR_INVALIDCALL';CreateDevice failed: 'D3DERR_INVALIDCALL';CreateDevice failed: 'D3DERR_INVALIDCALL' <p>Initializing opengl... ...
  • 2012.10.9

    2012-10-10 11:26:58
    程序运行的过程中,若锁定计算机,然后再解锁,会出现设备丢失,IDirectc3DDevice9::TestCooperativeLevel会返回D3DERR_DEVICELOST,若改变电脑的屏幕分辨率,或者色彩模式,IDirectc3DDevice9::...
  • 否则检测系统协调层级只能获得D3DERR_DEVICELOST,检查系统协调层级,系统可以根据函数返回值判断设备丢失时采取的措施,设备丢失能够被自动重置,这时候返回进行再次尝试,清空内存资源,调用Reset函数重置设备,...
  •  否则检测系统协调层级只能获得D3DERR_DEVICELOST,检查系统协调层级,系统可以根据函数返回值判断设备丢失时采取的措施,设备丢失能够被自动重置,这时候返回进行再次尝试,清空内存资源,调用Reset函数重置设备,...
  • Direct3d 设备丢失 (device lost)

    千次阅读 2017-01-23 16:55:30
    1.什么时候设备丢失   一个Direct3D设备, 有两种状态: 操作状态或丢失状态...丢失状态: 所有渲染操作悄然失败, IDirect3DDevice9::present返回错误码D3DERR_DEVICELOST   查帮助Lost Devices (Direct3D
  • BeginScene(); //实际的渲染操作 EndScene(); IDirect3DDevice9::BeginScene 方法 ...执行成功返回D3D_OK.失败返回 D3DERR_INVALIDCALL 如果不和EndScene();成对出现的话. IDirect3DDevice9::En...
  • Regular <strong>D3D9</strong> fails on CreateDevice with <strong>D3DERR_LOSTDEVICE</strong> when using the HMD. On the other hand the device can be created when using the Null Driver. If I use ...
  • 1.什么时候设备丢失   一个Direct3D设备, 有两种状态: 操作状态或...丢失状态: 所有渲染操作悄然失败, IDirect3DDevice9::present返回错误码D3DERR_DEVICELOST   查帮助Lost Devices (Direct3D 9)看更详...
  • Removed <code>E_FAIL</code> and <code>E_NOTIMPL</code> and replaced them with <code>D3DERR_INVALIDCALL</code>. These Direct3D APIs don't list <code>E_FAIL</code> and <code>E_NOTIMPL</code> as ...
  • This caused it to return error <code>D3DERR_DEVICELOST</code>. However GTA does not know how to properly handle this error and simply crashed. The fix is to call <code>Release()</code> to release the...

空空如也

空空如也

1 2 3
收藏数 54
精华内容 21
热门标签
关键字:

d3derr