问题标签 [directxtk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么在 x64 构建的 ARM 构建中缺少 CoCreateInstanceFromApp?
这个问题还没有答案
我知道未解析的外部符号是什么意思——我特别问为什么在构建为 ARM 时,我的项目缺少 DirectX 功能。当我为 Raspberry Pi 构建 DirectX 项目时,出现以下链接错误。为什么只有 ARM 版本缺少 CoCreateInstFromApp?
CoCreateInstanceFromApp上的 Microsoft 文档暗示它应该简单地存在于任何 Windows 可执行文件中——这实际上是我在构建同一项目的 x86 或 x64 版本时所看到的。它应该存在,因为 DirectX 确实支持 ARM 架构 - 还是我错过了什么?
该项目包括d3d11.lib
& dxgi.lib
,我认为它会从正确的目录中获取 - 但没有得到关于这些库的具体错误。该项目是 Visual Studio 2017 Pro v15.8.7 中的 C++。
编辑链接错误:
DirectXTK_ARM.lib:错误 LNK2019:函数“long __cdecl CoCreateInstance ...
DirectXTK_ARM.lib:错误 LNK2019:未解析的外部符号 __imp_PropVariantClear ....
更多信息,如果需要:
我已更改 Microsoft 的此桌面复制示例以进行屏幕截图而不是复制,因此删除了窗口代码并使用DirectXTK保存文件。这在我的桌面和 Minnowboard (x64 Win10 IoT) 上效果很好。但是,如果我尝试为 Raspberry PI (ARM) 进行编译,它会因链接错误而失败:
DirectXTK_ARM.lib(WICTextureLoader.obj):错误 LNK2019:函数“long __cdecl CoCreateInstance(struct _GUID const &,struct IUnknown *,unsigned long,struct _GUID const &,void * *)”中引用的无法解析的外部符号 __imp_CoCreateInstanceFromApp (?CoCreateInstance@ @YAJABU_GUID@@PAUIUnknown@@K0PAPAX@Z)
DirectXTK_ARM.lib(WICTextureLoader.obj):错误 LNK2019:函数“long __cdecl `anonymous namespace'::CreateTextureFromWIC(struct ID3D11Device *,struct ID3D11DeviceContext *,struct IWICBitmapFrameDecode *,unsigned int,enum D3D11_USAGE,unsigned int)中引用了无法解析的外部符号 __imp_PropVariantClear ,unsigned int,unsigned int,unsigned int,struct ID3D11Resource * *,struct ID3D11ShaderResourceView * *)" (?CreateTextureFromWIC@?A0x2b71c33d@@YAJPAUID3D11Device@@PAUID3D11DeviceContext@@PAUIWICBitmapFrameDecode@@IW4D3D11_USAGE@@IIIIPAPAUID3D1APResource@@P@PAPAUID3D1APD1ShaderResource@@PView) 1
directx - 为什么精灵渲染对象?
我想在本教程中的图片上渲染一个立方体。问题是它只渲染图片而立方体不渲染。你能帮助我吗 ?谢谢
c++ - DirectX 11 ClearRenderTargetView 全屏问题
我有一个 DirectX 11 应用程序,它呈现从 SDK 提供的帧。在创建. clear_screen
_swapchain_->SetFullscreenState(TRUE, dxgi_output)
swapchain_
这是我的render_frame
功能。它在一个单独的线程中调用,该线程运行play_loop
函数直到stop
函数被调用。
这是我的clear_screen
功能。我在我stop
的函数中调用它,stop
当没有更多新帧提供给我的类实例时调用该函数。
另外,我正在使用 DirectXTk 库在框架上覆盖一些文本。当我启用叠加时,clear_screen
会意外工作。这个库是否修复了我之前设置错误的一些东西?我正在使用下面的代码来绘制一个字符串;
directx-11 - SaveDDSTextureToFile() 保存黑色纹理而不是预期的
我创建了 DXGI 格式 DXGI_FORMAT_R32_FLOAT 的红色纹理。我有一个红色像素的字节缓冲区,其中每个像素准备了 4 个字节。然后使用设备上下文映射和取消映射函数复制字节缓冲区,之后我创建了一个着色器资源视图。我已经从资源视图中取回资源,然后将其传递给 SaveDDSTextureToFile() 以将位图数据保存为 dds 文件格式。但是当我将它保存在文件中的 dds 中以检查它是否保存了相同大小的纹理时,它是全黑的。我应该在哪里调试?
我通过以下方式创建了红色纹理缓冲区:
c++ - 输入汇编器 - 顶点着色器链接错误
我正在尝试通过使用SpriteFont
and在我的 DX11 项目中呈现文本SpriteBatch
。
在添加代码之前一切正常,但是当未注释代码时,我收到以下错误并且没有任何渲染。
我试图更改 DeviceContext & Device,但仍然是同样的错误。
我试过使用不同的设备和设备上下文,但仍然是同样的错误。
我一直在尝试许多不同的方法来让这个工作。这就是我的渲染函数目前的样子
更新日期:18/02/2019
运行项目时,出现以下错误
D3D11 ERROR: ID3D11DeviceContext::IASetVertexBuffers: A Buffer trying to be bound to slot 0 did not have the appropriate bind flag set at creation time to allow the Buffer to be bound as a VertexBuffer. [ STATE_SETTING ERROR #238: IASETVERTEXBUFFERS_INVALIDBUFFER]
这是存储 tri 数据并设置索引/顶点缓冲区的代码
我已更改D3D11_BIND_INDEX_BUFFER
为D3D11_BIND_VERTEX_BUFFER
并发生相同的错误。
在此之后,还会产生以下警告。
c++ - DirectXTK SoundEffect->CreateInstance() 返回 NULL
全部。终于到了为我的游戏引擎添加音频的时候了。
我有简单的 SoundEffect->Play() 函数工作得很好,但我想要 SoundEffectInstances 以便我可以应用 3D 效果等。
当我调用 SoundEffect->CreateInstance() 时,它返回一个 NULL 指针。我尝试打开音频引擎中的调试层,但它没有给我任何信息。
否则,基本 SoundEffects 可以正常工作。我能够播放声音并且他们加载了他们的文件(非空指针)。
据我所知,我正在按照教程中的说明进行操作。我是否遗漏了什么,或者 CreateInstance() 调用失败的原因是什么?我可以确认在向量中使用指向结构的指针没有问题,因为我可以获取该引用,然后通过引用获取 SoundEffect->Play() 它。
谢谢。
代码片段:
}
2019 年 3 月 5 日更新对于 Chuck:感谢 Chuck 的回复。当我说它返回空值时,我可能说错了。具体来说,参数 mBase{voice=null。我创建了一些代码来排除向量的问题,然后我下载了项目并进入了创建实例函数。根据局部变量选项卡,voice在调用return之前为NULL。这是一个代码片段和一张图片,显示了我在屏幕上看到的内容:
是否有可能无法为声音实例分配源语音?
更新 2:
3d - 为什么当我尝试在 directX 中渲染 fbx 模型时纹理坐标错误
我有一个 c++/cx 项目,我想使用 DirectX-11 渲染网格(从 FBX 文件加载)。FBX 文件包含纹理坐标,但是在渲染它们时,这些发送到顶点着色器的 UV 坐标是完全错误的。
这是它的外观:
这些应该是 2 名骑自行车的人,但纹理映射完全错误。
顶点描述如下:
请注意,Position 和 Nomal 数据在渲染时是正确的,只有纹理坐标是错误/缺失的。
VertexShader-输入和-输出:
像素着色器输入:
这是 fbx 文件的片段:
fbx 文件由 Visual Studio 构建为 cmo 文件,并使用 directxtk 像这样加载:
然后像这样初始化 PlayerMesh(_playerModel 被传递给这个函数):
如果有帮助,我可以分享更多代码和整个 fbx 文件,请问,我真的不知道还有什么有用的信息。
如果有人可以阐明如何在着色器中正确获取 uv 坐标,将不胜感激。
有什么帮助吗?
编辑:我最初说 UV 的位置为 0,但我注意到有
代替
解决了这个问题,但不知道为什么。
directx-11 - GXMVECTOR - 文档?
经过十年做其他事情后,我正在尝试重新学习directx。我在 github wiki 上阅读了有关如何渲染一些精灵的教程:
https://github.com/Microsoft/DirectXTK/wiki/Sprites-and-textures
在 Draw 方法中,它使用“DirectX::SpriteBatch::Draw”,其中一个重载似乎具有“FXMVECTOR”和“GXMVECTOR”的参数。我设法找到了前者的一些文档,但找不到后者的任何文档。
谁能告诉我在哪里看?它是 DirectXMath 的一部分还是其他东西?
directx - DirectX:无法从 CMO 渲染模型
我正在尝试使用 DirectX 绘制模型(遵循本教程:https ://github.com/Microsoft/DirectXTK/wiki/Rendering-a-model?fbclid=IwAR3A0mw9rzjJHrN3mwgSb9a6oKqNgiDiAnnfkVLIIQVca9Og6cvfvscuVfE )。
我已经将我的 model.cmo 文件与Add existing item和以下行添加到Game::CreateDevice()
由于上述行出现异常,我无法构建和运行我的项目
directX_project.exe 中 0x747318A2 处的未处理异常:Microsoft C++ 异常:内存位置 0x00B3F738 处的 std::exception。发生了
我将不胜感激有关如何解决或调试该问题的任何提示