Articles of DirectX

从代码创build另一个窗口?

我目前正在开发一款游戏,并且希望添加一个外部控制台(现在它已经内置在主游戏窗口中)。 我真正喜欢的是创build一个新的窗口,作为控制台可能在底部的文本框添加新的命令,并在顶部输出信息的大型文本框。 我正在使用DirectX,并不是所有这一切都确定如何去做这件事。 我从C ++创build一个新的窗口? 如果是这样,我将如何去做与给定的要求(我真的更喜欢我创build的窗口不是我的CLR)。 主应用程序窗口和控制台窗口之间的通信会有问题吗? 我不介意使用实际的Windows窗体对象来实现这一点(事实上,我更喜欢这样做,因为它会给复制+粘贴优势等)。 我想要最灵活的选项,也许我可以在控制台窗口中添加多彩文本等。 欣赏这个=)的任何帮助

什么创build了三个closures/最小化/最大化窗口顶部的图标? (C ++)

我正在制作一个C ++ / Windows / DirectX程序,当它运行在窗口模式(使用 d3dpp.Windowed = (!FULLSCREEN); 其中FULLSCREEN被定义为0),通常位于任何窗口(最小化,最大化/还原和closures)顶部的三个图标都不存在。 此外,它不像只是一个没有边框或任何东西的图像,它看起来像一个正常的窗口,减去上述三个图标。 那么,什么可能导致一个窗口失去顶部的三个图标而不改变它的任何其他方面?

使用DirectX的g ++窗口?

是否有可能在Windows上使用g ++编译代码并使用DirectX? 与使用Visual Studio编译器有很大的速度差异吗? 由于DirectX已经是一个编译库,我认为没有区别。 是否有任何types的许可证阻止这种情况

DirectX10交换链和设备指向0x00000000(导致运行时错误)(c ++)

好吧,我跟着这个教程 (代码是在页面下面,只是图片的顶部,你可以点击显示代码)关于DX10和C + +基本上是代码是 // include and stuff ID3D10Device* device; // adding = NULL wont change problem ID3D10RenderTargetView* rtv; IDXGISwapChain* swapchain; // function predecs, winmain, winproc // winmain calls initD3D(hWnd) just before entering msg loop void initD3D(HWND hWnd){ DXGI_SWAP_CHAIN_DESC scd; // creates struct for swap chain info ZeroMemory(&scd, sizeof(DXGI_SWAP_CHAIN_DESC)); // clear the struct for use […]

将video文件加载到C ++中的缓冲区中

我目前正试图创build一个程序,需要一个video文件,通常是一个AVI,并试图将其转换成图像。 到目前为止,我已经完成了这个过程,如果需要的话可以单独使用。 不过,我想看看是否有可能优化速度。 所以我的问题是,如果有可能通过块加载video文件的一部分到内存块,而不是stream。 也许加载一个2 – 3分钟的剪辑到缓冲区中,处理它,并在接下来的2 – 3分钟的video重用。 我已经看过Direct Show和OpenCV加载和播放video文件,但到目前为止还没有find任何有关加载video到缓冲区。 任何教程或概念的链接非常感谢。 这将在Windows XP / 7机器上开发,如果有帮助的话。

窗口被激活时收到的消息

我试图暂停一个DirectX游戏,当窗户失去焦点,但消息似乎是不一致的。 当使用Windows模式WM_SETFOCUS和WM_KILLFOCUS消息收到,一切工作正常,但是这些消息不会收到时使用全屏幕模式。 WM_NCACTIVATE在使用全屏模式时收到,并且工作正常,但是在应用程序从任务栏最小化时,窗口模式不会收到。 WM_ACTIVATEAPP在几种情况下也没有收到。 是否有任何一致的方式来处理收益/失去焦点问题? 我只想使用全屏和窗口模式下收到的一条消息。

什么导致模糊的符号错误? C ++

我正在尝试通过做一个小型的Windows手机应用程序来学习C ++。 目前我只是按照教程来掌握开发的Windows手机。 但是,在尝试构build代码时遇到了模糊的信号错误。 我已经习惯了与Java相关的细节,并且对于可能导致这个错误的东西有点遗憾。 我得到的错误转储是: 1>c:\program files (x86)\windows phone kits\8.0\include\wrl\event.h(740): error C2872: 'EventRegistrationToken' : ambiguous symbol 1> could be 'c:\program files (x86)\windows phone kits\8.0\include\eventtoken.h(51) : EventRegistrationToken' 1> or 'c:\program files (x86)\windows phone kits\8.0\windows metadata\windows.winmd : Windows::Foundation::EventRegistrationToken' 1> c:\program files (x86)\windows phone kits\8.0\include\wrl\event.h(1035) : see reference to class template instantiation 'Microsoft::WRL::EventSource<TDelegateInterface>' being compiled 1>c:\program files […]

DirectXMath支持哪里?

我正在试图解决DirectXMath支持的地方。 我知道这是从Windows 8前进的新事物,但没有macros观检查(例如对_WIN32_WINNT),并在我的testing似乎至less工作正常与Windows7和VS2013。 与大多数MSDN文档不同,它的文档页面上似乎没有“平台要求”部分。 这只是编译器的问题吗?

ID3D11DeviceContext :: Map性能低下

我正在使用桌面复制将屏幕的内容复制到内存中的位图。 我接收桌面纹理,然后创build一个临时纹理,使用CopyResource将桌面纹理复制到暂存纹理中,最后调用ID3D11DeviceContext::Map访问临时纹理位并复制它们。 几乎相同的方式描述在这里: https : //stackoverflow.com/a/27283837/825318 问题是Map调用需要很多时间 – 对于像4K这样的大显示分辨率,每次调用可能需要长达100ms,这是高得无法接受的,因为我需要确保30fps的速度。 有没有办法让纹理的内容更快? 如果没有,有没有办法提供我自己的映射地址指针,以便系统在那里复制纹理数据? 谢谢

如何直接在Windows中分配video卡内存?

我需要在Windows中的项目中的video卡内存中分配位图。 由于该项目使用除GDI以外的其他2d库,所以CreateCompatibleBitmap是没用的。 然后我找出使用DX的方法,这里是我的代码: if(FAILED(g_D3DDevice->CreateVertexBuffer(10240 * 1024, 0, D3DFVF_VERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer, NULL))) return false; // Fill the vertex buffer. void *ptr; if(FAILED(g_VertexBuffer->Lock(0, 1024 * 10240, (void**)&ptr, 0))) return false; //do something… //printf("ptf = %x\n", ptr); //memcpy(ptr, objData, sizeof(objData)); g_VertexBuffer->Unlock(); 迄今为止效果很好。 但是有没有副作用?