本人需要使用D3D处理图像数据,但是并不需要显示绘制,也就是no display,所以不需要创建Windows窗口。
但是看D3D的代码,基本都是和Windows窗口关联的,很多函数参数都需要传递窗口句柄hWnd,
想问下,使用D3D时是否可以不创建Windows窗口,而纯粹的处理图像数据?
不需要创建,而且创不创建窗口没有关系,本质上还是处理texure,ID3D11Texture2D,最后画到窗口上,最后一步不需要就行了
你查的是windows编程的吧,当然是与窗口关联的函数。
如果是使用D3D处理图像数据,可以不创建窗口
你可以调用API
当然,还有其它文档,这里只是一个参考
https://docs.microsoft.com/zh-cn/uwp/win32-and-com/win32-apis
这个是打开图片使用D3D渲染的例子
https://docs.microsoft.com/en-us/windows/win32/direct3dgetstarted/understand-the-directx-11-2-graphics-pipeline
好像可以,使用D3D时不用创建窗口让它显示在桌面的一角吧,试试在代码里加上这个
// 显示在左上角,128×128宽
RECT rect;
rect.left = 0;
rect.right = 128;
rect.top = 0;
rect.bottom = 128;
// 显示
g_pd3dDevice->Present(0 , &rect , 0 , 0);
好像可以,使用D3D时不用创建窗口让它显示在桌面的一角吧,试试在代码里加上这个
// 显示在左上角,128×128宽
RECT rect;
rect.left = 0;
rect.right = 128;
rect.top = 0;
rect.bottom = 128;
// 显示
g_pd3dDevice->Present(0 , &rect , 0 , 0);
需要创建窗口,因为D3D设备需要提供窗口句柄,但是可以选择不显示
在CreateWindows()时style不包含WS_VISIBLE,或者不调用ShowWindow()
D3D本身就是做图像处理的, 所以建议创建一个隐身窗口就行了,如果觉得别扭建议你另外找个例子看看