基本上,我正在尝试将前置或后置缓冲区复制到纹理,抓取所述纹理的1x1 mipmap级别,然后将生成的颜色反射到Arduino以控制我的房间的光照。其他所有东西都已启动并运行,我已经通过GetDC(NULL)和StretchBlt让它工作了。但这大约是15FPS,而且Windows GUI运行不稳定。
下采样只是需要在GPU上使用。
在D3D9中,似乎只有GetBackBuffer()或类似的东西,但我在D3D10中看不到类似的东西。我甚至不确定它会从Windows GUI中获取任何东西。
问题:
- 我会使用哪些功能?:
- 我是否需要事先明确创建交换链?
- 这只会从其他D3D程序中捕获数据吗?
好的,这就是我创造纹理的地方但是我没有看到任何让我回到纹理的东西:
//Create Texture
D3D10_TEXTURE2D_DESC tBufferDesc;
ID3D10Texture2D *tBuffer = NULL;
DXGI_SAMPLE_DESC iBufferSamples = {1,0};
tBufferDesc.Width = iScreenSizeX;
tBufferDesc.Height = iScreenSizeY;
tBufferDesc.MipLevels = 0;
tBufferDesc.ArraySize = 1;
tBufferDesc.Format = DXGI_FORMAT_B8G8R8A8_TYPELESS;
tBufferDesc.SampleDesc = iBufferSamples;
tBufferDesc.Usage = D3D10_USAGE_DEFAULT;
tBufferDesc.BindFlags = D3D10_BIND_SHADER_RESOURCE | D3D10_BIND_RENDER_TARGET;
tBufferDesc.CPUAccessFlags = 0;
tBufferDesc.MiscFlags = D3D10_RESOURCE_MISC_GENERATE_MIPS;
HRESULT tBufferResult = pDevice->CreateTexture2D(&tBufferDesc, NULL , &tBuffer);
hrResult(tBufferResult);
ID3D10RenderTargetView *rtBuffer;
ID3D10Resource *rsBuffer;
pDevice->OMGetRenderTargets(1, &rtBuffer, NULL);
rtBuffer->GetResource(&rsBuffer);
rsBuffer->