问题标签 [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.

0 投票
1 回答
652 浏览

c++ - PNG 伽玛校正

我使用该DirectXTex库捕获 DX11 游戏的屏幕截图并将其保存到文件中。问题是当我将它保存为 jpeg 时效果很好,但是如果我将它保存为 png 图像会变得非常亮并且褪色。我使用检查了图像 TweakPNG,发现伽马设置为 1.0,这就是导致问题的原因。 调整PNG 我检查了其他一些软件(包括截图工具)拍摄的图像,它们似乎使用 0.45455 作为 gamma 或者完全忽略了 gamma 值。

我不知道是否DirectXTex会让我指定一个伽玛值。我什至不确定是否WIC具有此功能,因为我似乎无法在 MSDN 或其他网站上找到有用的信息。

0 投票
1 回答
178 浏览

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

0 投票
2 回答
107 浏览

directx - 为什么精灵渲染对象?

我想在本教程中的图片上渲染一个立方体。问题是它只渲染图片而立方体不渲染。你能帮助我吗 ?谢谢

0 投票
0 回答
146 浏览

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会意外工作。这个库是否修复了我之前设置错误的一些东西?我正在使用下面的代码来绘制一个字符串;

0 投票
0 回答
463 浏览

directx-11 - SaveDDSTextureToFile() 保存黑色纹理而不是预期的

我创建了 DXGI 格式 DXGI_FORMAT_R32_FLOAT 的红色纹理。我有一个红色像素的字节缓冲区,其中每个像素准备了 4 个字节。然后使用设备上下文映射和取消映射函数复制字节缓冲区,之后我创建了一个着色器资源视图。我已经从资源视图中取回资源,然后将其传递给 SaveDDSTextureToFile() 以将位图数据保存为 dds 文件格式。但是当我将它保存在文件中的 dds 中以检查它是否保存了相同大小的纹理时,它是全黑的。我应该在哪里调试?

我通过以下方式创建了红色纹理缓冲区:

0 投票
1 回答
1339 浏览

c++ - 输入汇编器 - 顶点着色器链接错误

我正在尝试通过使用SpriteFontand在我的 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_BUFFERD3D11_BIND_VERTEX_BUFFER并发生相同的错误。

在此之后,还会产生以下警告。

0 投票
0 回答
88 浏览

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:

一切正常但没有声音的图片: 调试

0 投票
0 回答
259 浏览

3d - 为什么当我尝试在 directX 中渲染 fbx 模型时纹理坐标错误

我有一个 c++/cx 项目,我想使用 DirectX-11 渲染网格(从 FBX 文件加载)。FBX 文件包含纹理坐标,但是在渲染它们时,这些发送到顶点着色器的 UV 坐标是完全错误的。

这是它的外观:

2 骑自行车的人

这些应该是 2 名骑自行车的人,但纹理映射完全错误。

顶点描述如下:

请注意,Position 和 Nomal 数据在渲染时是正确的,只有纹理坐标是错误/缺失的。

VertexShader-输入和-输出:

像素着色器输入:

这是 fbx 文件的片段:

fbx 文件由 Visual Studio 构建为 cmo 文件,并使用 directxtk 像这样加载:

然后像这样初始化 PlayerMesh(_playerModel 被传递给这个函数):

如果有帮助,我可以分享更多代码和整个 fbx 文件,请问,我真的不知道还有什么有用的信息。

如果有人可以阐明如何在着色器中正确获取 uv 坐标,将不胜感激。

有什么帮助吗?

编辑:我最初说 UV 的位置为 0,但我注意到有

代替

解决了这个问题,但不知道为什么。

0 投票
1 回答
162 浏览

directx-11 - GXMVECTOR - 文档?

经过十年做其他事情后,我正在尝试重新学习directx。我在 github wiki 上阅读了有关如何渲染一些精灵的教程:

https://github.com/Microsoft/DirectXTK/wiki/Sprites-and-textures

在 Draw 方法中,它使用“DirectX::SpriteBatch::Draw”,其中一个重载似乎具有“FXMVECTOR”和“GXMVECTOR”的参数。我设法找到了前者的一些文档,但找不到后者的任何文档。

谁能告诉我在哪里看?它是 DirectXMath 的一部分还是其他东西?

0 投票
1 回答
235 浏览

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。发生了

我将不胜感激有关如何解决或调试该问题的任何提示