ID2D1Bitmap和IWicBitmap有什么区别我有原始内存数据,我想创建一个位图 最佳答案 WIC位图表示系统内存中的图像,可以在widerangeofformats中(JPEG、PNG、BMP等)。D2D位图表示GPU内存中的图像,它是少数hardware-acceleratedfomats之一。.假设你想使用D2D将位图绘制到屏幕上,并且你的原始内存数据是与D2D兼容的格式,你应该使用ID2D1RenderTarget::CreateBitmap直接地。如果它不是兼容格式(例如,它是指向.png文件的原始数据的指针),则
使用2010年6月版的DirectXSDK编写程序时,有必要在安装程序中包含几个可再分发的cab文件,以便程序在全新的Windows安装上运行。DirectX现在包含在WindowsSDK中,但我无法找到有关在构建安装程序时是否需要任何类型的可再分发文件的信息。假设我使用Windows10SDK。我的程序只能在全新的Windows7安装上运行吗?还是我缺少某种可再分发的东西?这是我自己发现的:1)Windows10SDK目录中似乎有一个“Redist”目录,其中包含d3dcompiler_47.dll和d3dcsx_47.dll。我的假设是,如果链接了等效的库,那么我将需要在我的应用程
我需要在Windows项目中的视频卡内存中分配位图。因为该项目使用了除GDI之外的其他二维库,所以CreateCompatibleBitmap没有用。然后我想出了一个使用DX的方法,这是我的代码:if(FAILED(g_D3DDevice->CreateVertexBuffer(10240*1024,0,D3DFVF_VERTEX,D3DPOOL_DEFAULT,&g_VertexBuffer,NULL)))returnfalse;//Fillthevertexbuffer.void*ptr;if(FAILED(g_VertexBuffer->Lock(0,1024*10240,(vo
是否可以通过windows8sdk或directxsdk使用direct3d11?作为一名学习者,不清楚这种选择有什么影响。directx11是用windowssdk学还是directxsdk学,有什么区别? 最佳答案 directxsdk(最后一次是2010年6月,三年前)已弃用。Windows8套件包含最新版本的直接xheader和库。基本API和文档大部分相同,但缺少最近的更改。D3DX已弃用,数学移至directxmath.h,着色器编译移至d3dcompiler.hPix不再适用于最新的Windows,因此您必须坚持使用v
所以,我不知道如何使用着色器。对它们进行编码很容易,但实际上使用它们并不容易。MSDN对我来说真的没用,这意味着他们有最糟糕的教程。我目前正在阅读FrankLuna的Direct3d11书,我终于到了真正开始绘制东西的部分。令人兴奋,除了它不起作用的事实。他的BoxDemo-我肯定在3年前制作这本书时工作过,但现在有了所有新的DirectX东西-省略了DirectXSDK,现在使用“WindowsSDK”,FX被弃用,不再有D3DX库......太令人沮丧了。我继续降级到DirectX2010SDK-这样我就可以实际使用教程了。几乎所有的D3D教程都使用D3DX库。无论如何...现在回
当我尝试使用标志DXGI_CREATE_FACTORY_DEBUG调用D3D12GetDebugInterface或CreateDXGIFactory2时,调用在我的笔记本电脑上失败,但在我的台式机上却没有。其他调用在笔记本电脑上运行良好,我可以渲染东西——我只是无法初始化调试层。桌面有一个老式的GeForce650Ti,笔记本电脑是戴尔XPS15笔记本电脑(最新一代),它有一个GeForceGTX960M。两者都有最新的驱动程序(361.43)。有什么想法可能会出错吗?我在NVIDIA上发布了devtalkforum首先,但交叉发布到stackoverflow,因为NVIDIA官方论
我正在使用桌面复制将屏幕内容复制到内存中的位图中。我收到桌面纹理,然后创建暂存纹理,使用CopyResource将桌面纹理复制到暂存纹理中,最后调用ID3D11DeviceContext::Map访问暂存纹理位和复制它们。与此处描述的方式几乎相同:https://stackoverflow.com/a/27283837/825318问题是Map调用需要花费大量时间-对于4K等大型显示分辨率,每次调用最多可能需要100毫秒,这高得令人无法接受,因为我需要确保30fps速度。有没有什么办法可以更快的获取贴图的内容?如果没有,有没有办法提供我自己的映射地址指针,以便系统将纹理数据复制到那里?
我正在从一本关于游戏编程的书中学习DirectX,它使用以下方法进行游戏循环:longintstart=GetTickCount();while(true)GameRun();voidGameRun(){if(GetTickCount()-start>=30)//dostuff}这使得start无论时间如何都相等(我猜gettickcount给出了自程序启动以来的“滴答”数),然后,30个滴答后,执行所有的AI、渲染等我的问题是,如果先做所有的AI等,然后,如果还有时间,等到需要更改框架时,会不会更有效率?那么,保持稳定帧率的更好方法是什么?(最好只使用我已经用于声音、图像和输入的Di
我使用DirectInput来处理输入设备,我枚举设备和每个设备上的元素。在我的游戏handle上使用模拟摇杆时,它们会报告0-65535范围内的值。对于所有类型的绝对轴,总是都是这种情况吗?如果不是:是否有任何方法可以找出DX8输入元素的DIDEVICEOBJECTDATA::dwData(用DIDFT_ABSAXIS枚举)的范围?我能想到的唯一其他选择是在我的应用程序中使用一些自制的内部校准,这听起来太像80年代了,不可能是真的。 最佳答案 您不能使用GetProperty获取范围并传入要填充的适当DIPROPRANGE结构吗?
我知道的渲染透明窗口的唯一方法是调用UpdateLayeredWindows,如果我需要渲染D3D9渲染目标的结果,这会非常慢。我必须通过调用GetRenderTargetData和然后我必须通过调用UpdateLayeredWindow将其呈现在屏幕上。在这里http://msdn.microsoft.com/en-us/library/windows/desktop/ee890072(v=vs.85).aspx有关于如何通过“D3D9ExFlipModePresenttoDWM”优化渲染的描述。渲染顶级透明窗口是否有某种类似的优化?谢谢 最佳答案