काम नहीं करता है क्योंकि D3DPOOL_SCRATCH द्वारा प्रोसेसिंग धीमी थी, मैंने इंटरनेट पर रिपोर्ट के संदर्भ में डेस्कटॉप कैप्चर प्रोग्राम लिखा था। हालांकि, परिणाम एक पिच-ब्लैक पिक्चर है। क्या यह एक कंसोल प्रोग्राम का परिणाम है या क्या कोई अन्य कारण है?डायरेक्टएक्स के साथ डेस्कटॉप कैप्चर
#include <stdio.h>
#include <Windows.h>
#include <d3d9.h>
void main()
{
CoInitialize(NULL);
LPDIRECT3D9 d3d9;
LPDIRECT3DDEVICE9 d3ddev;
d3d9 = Direct3DCreate9(D3D_SDK_VERSION);
int ww = GetSystemMetrics(SM_CXSCREEN);
int wh = GetSystemMetrics(SM_CYSCREEN);
HWND hwnd = GetDesktopWindow();
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
d3dpp.BackBufferCount = 1;
d3dpp.BackBufferWidth = ww;
d3dpp.BackBufferHeight = wh;
d3dpp.MultiSampleType = D3DMULTISAMPLE_NONE;
d3dpp.MultiSampleQuality = 0;
d3dpp.EnableAutoDepthStencil = TRUE;
d3dpp.AutoDepthStencilFormat = D3DFMT_D16;
d3dpp.hDeviceWindow = hwnd;
d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
d3dpp.FullScreen_RefreshRateInHz = D3DPRESENT_RATE_DEFAULT;
d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
d3d9->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp, &d3ddev);
IDirect3DSurface9* render;
IDirect3DSurface9* dest;
d3ddev->CreateOffscreenPlainSurface(ww, wh, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &dest, NULL);
d3ddev->GetRenderTarget(0, &render);
d3ddev->GetRenderTargetData(render, dest);
D3DLOCKED_RECT bits;
dest->LockRect(&bits, NULL, D3DLOCK_READONLY);
// If a capture is successful, colors other than black(0x00000000) should enter.
for(int i = 0; i < 100; i++){
printf("%02X ", *((BYTE*)bits.pBits + i));
}
dest->UnlockRect();
render->Release();
dest->Release();
d3ddev->Release();
d3d9->Release();
CoUninitialize();
}
मैंने आपका कोड चलाने का प्रयास किया। मुझे निम्न त्रुटियां मिलीं: 1> Source.obj: त्रुटि LNK2019: अनन्य बाहरी प्रतीक _Direct3DCreate9 @ 4 फ़ंक्शन में संदर्भित _main 1> MSVCRTD.lib (crtexew.obj): त्रुटि LNK2019: अनसुलझा बाहरी प्रतीक _WinMain @ 16 फ़ंक्शन में संदर्भित ___tmainCRTStartup मुझे समझ में नहीं आता कि उनका क्या मतलब है। मैं डायरेक्टएक्स में नया हूं और स्क्रीन कैप्चर प्रोग्राम बनाने की कोशिश कर रहा हूं। क्या आप मेरी मदद कर सकते हैं कि मैं कहां गलत हो रहा हूं या मुझे किस दिशा में जाना चाहिए? – newbie2015