다른 버전의 두 가지 다른 d3d 장치간에 표면을 공유하려고합니다. 하나는 d3d9이고 다른 하나는 d3d9Ex 이상입니다.D3D9 및 D3D9Ex 윈도우 7의 표면 점유율
link에서 확인할 수있는 MSDN 설명서를 기반으로합니다.
은 또한 당신이 공유 표면을 지원하지 않는 another link이제 장치 또는 프로세스간에 Direct3D 리소스를 공유 할 수 있습니다. 이것은 텍스처, 정점 버퍼, 인덱스 버퍼 또는 표면 (렌더 타겟, 심도 스텐실 버퍼 또는 화면이없는 평평한 표면)을 포함하는 모든 Direct3D 리소스에 적용됩니다.
에서 너무 Direct3D를 10.0, 다이렉트 3D 9C, 세 Direct3D의 런타임을 할 수없는 상태 MSDN 설명서에 따라. 시스템 메모리 복사본은 GDI 또는 DXGI 기반 API와의 상호 운용성을 위해 계속 사용됩니다. 제공
HANDLE SharedHandle = NULL; IDirect3DTexture9 *d3d9Tex; pD3D9Dev->CreateTexture(Width, Height, 1, D3DUSAGE_RENDERTARGET, Format, D3DPOOL_DEFAULT, &d3d9Tex, &SharedHanlde); if(FAILED(hr)) { LOG("failed %s %s", GetD3DErrorString(hr), CNGetErrorString(GetLastError())); } IDirect3DTexture9 *d3d9ExTex; pD3D9DevEx->CreateTexture(Width, Height, 1, D3DUSAGE_RENDERTARGET, Format, D3DPOOL_DEFAULT, &d3d9ExTex, &SharedHanlde); if(FAILED(hr)) { LOG("failed %s %s", GetD3DErrorString(hr), CNGetErrorString(GetLastError())); }
:
Direct3D9: (ERROR) :Device is not capable of sharing resource. CreateTexture fails.
CreateRenderTarget이 같은 결과를 얻을 수 확인하려면
따라서 코드, 그것을 자신을 시도하는 것입니다.
많은 결과에 실망했다. 나의 질문은, 리소스 공유가 d3d9에서 전혀 작동하지 않는다는 것인가 아니면 내가해야만하는 것을 놓친 것인가?
감사합니다. 그 쪽이 맞는 거 같아요. 나는 초기 문서화가 d3d9ex에 대해 이야기하고 있었기 때문에 표면 공유가 d3d9와 d3d9ex 사이에 있다고 생각했다. – vgrimmer