草庐IT

managed-directx

全部标签

c++ - 着色器中的 DirectX 着色器资源 View

我现在有点困惑,只是想请大家帮我弄清楚一些想法。在HLSL着色器(例如计算着色器)中,我可以声明一个StructuredBuffersb,对吧?我是否必须将它绑定(bind)到一个寄存器,例如:register(t0)?从应用程序端,我可以调用CSSetShaderResources(...)。第一个参数(StartSlot),它与寄存器声明中“t”后面的小数字有什么关系吗?如果我将StartSlot设置为0(例如),并将第二个参数设置为2。我是否告诉API我将绑定(bind)两个着色器资源View,一个在register(t0)中,另一个在register(t1)?如果我声明Text

c++ - 在加载和保存期间缺少 DirectX 中 PNG 纹理的某些颜色?

我使用标准的DirectX函数(如CreateTexture2D、D3DX11SaveTextureToFile和D3DX11CreateShaderResourceViewFromFile)加载PNG图像,在新创建的纹理上渲染它,然后比保存到文件。所有的纹理都是两种尺寸的力量。但在此过程中,我注意到PNG中的某些颜色有点损坏(与源纹理中的颜色相似但不相同)。透明度相同(它适用于0和100%透明度部分,但不适用于例如34%)。是否有一些大的颜色近似值或我做错了什么?如果是,我该如何解决?这是这两张图片(左边是来源:底部有一些不同的颜色和一些渐变透明度;右边是加载第一张图片并在新纹理上渲

c++ - DirectX 11 帧缓冲区捕获(C++,无 Win32 或 D3DX)

我想使用DirectX11将我的前缓冲区或后缓冲区的内容捕获到一个字节数组中,然后我可以将其用作纹理或创建文件的源。到目前为止,我有一个交换链设置、大量渲染和以下代码-我确保在调用Present之后调用它。ID3D11Texture2D*pSurface;HRESULThr=m_swapChain->GetBuffer(0,__uuidof(ID3D11Texture2D),reinterpret_cast(&pSurface));if(pSurface){constintwidth=static_cast(m_window->Bounds.Width*m_dpi/96.0f);con

c++ - 每3秒DirectX应用程序 “hiccups”

我已经调查DirectX11C++应用程序中的一个问题已有一个多星期了,因此,我向StackOverflow上的好人寻求帮助,以帮助他们深入研究这一问题。我的应用程序大多数情况下将以每秒60-90帧的速度运行,但是每隔几秒钟我就会得到一帧,大约需要三分之一的时间才能完成。经过大量研究,调试和使用了各种代码分析器之后,我将其范围缩小到对DirectXAPI的调用。但是,从一个慢帧到下一个慢帧,并非总是相同的API调用引起减速。在我最近的一次运行中,停顿的call(大约持续五分之一秒)是ID3D11DeviceContext:UpdateSubresourceID3D11DeviceCon

c++ - boost::interprocess::managed_shared_memory 在不同版本的 boost 之间的兼容性

是否有明确的兼容性保证boost::interprocess::managed_shared_memory可以跨不同的boost版本工作?我打算用它在多个进程之间共享一个整数或十(这实际上将充当它们都读取和写入的一段数据的修订号)。这些进程是单独发布的,并且偶尔会终止使用。问题是:我是否会因为1.51中的managed_shared_memory无法与1.44中的managed_shared_memory进行对话而将自己永远锁定在给定的boost版本上? 最佳答案 根据BoostFAQ:HowcantheBoostlibraries

c++ - 如何调试或修复涉及 boost::interprocess managed_shared_memory 的无限循环和堆损坏问题?

我收到以下“第一次机会异常”消息,该消息来self编写的DLL,该DLL在我未编写的可执行文件中运行。也就是说,DLL是一个插件。第一次触发此异常时,尝试打开共享内存映射文件失败。如果我忽略第一次机会异常而只是运行,应用程序最终会卡住或崩溃。First-chanceexceptionat0x76a7c41finnotmyexe.exe:MicrosoftC++exception:boost::interprocess::interprocess_exceptionatmemorylocation0x002bc644..几个小时后,它似乎是由一段无限循环的代码块引起的,直到预期的异常条件

c++ - Visual Studio 2010 : Fatal Error C1902 about "program database manager"

这是来自MSDN的一些描述ErrorMessageprogramdatabasemanagermismatch;pleasecheckyourinstallationAprogramdatabasefile(.pdb)wascreatedusinganewerversionofmspdb80.dllthantheonefoundwhilecompiling.Thiserrorusuallyindicatesthatmspdbsrv.exeormspdbcore.dllaremissingorhavedifferentversionsfrommspdb80.dll.Ensurematch

c++ - 如何检索 DirectX 9 的错误字符串

我想检索DirectX9的错误字符串,但我可以在网上找到使用FormatMessage()和_com_error.ErrorMessage()的方法,这两个方法都让我失望。hr=g_pd3dDevice->GetRenderTargetData(......//thedebuggertellsmehr=0x8876086cFormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,NULL,hr,0,(LPTSTR)&lpBuf,0,NULL)

c++ - DirectX 11 中的视频播放

非常不言自明。Microsoft拥有用于DirectX9的DirectShow,但是将DirectShow与DX11一起使用是一场难以言喻的COM噩梦。是否有我从未听说过的视频渲染标准,或者是否有用于此目的的免费第三方库?编辑:多亏了Mgetz,我才知道微软试图提供解决方案,MediaFoundation.但是,它仅限于Windows8+,我更愿意避免这种情况。 最佳答案 这可能不完全符合您的要求,但为了您的目标,您可以看看ffmpeg、libx264和theora(用于ogg声音)或faad(解码aac)。我已经完成了使用ffmp

android - 无需 Asset Manager 和复制,直接在 C++ 中访问 Android APK Asset 数据

我在我的引擎中使用纯C++在android中创建游戏引擎。没有单个java文件。基本上这是一款只能存储到外部存储器的游戏。当我通过adb手动将我的Assets数据移动到我的外部SD卡时,游戏运行良好且稳定。adbpush..\..\Bin\Data/sdcard/Android/data/com.fantasyhaze.%SMALL_PACKAGE_NAME%/files/Data/这不是一个好的解决方案,因为它无法交付。因此我的Assets数据在Assets文件夹中它在构建过程中被移动到具有以下结构的apk文件中:Assets/数据/MoreFolders/Withsubfolder