问题标签 [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++ - DirectxTK SpriteBatch 和视口居中
我在 C++ 中使用 DirectXTK,并且大量使用 sprite 批处理功能。
我正在尝试开发等距渲染引擎。我已经让等距渲染正常工作。连同抵消。但是我遇到了一个主要问题。
我一生都无法弄清楚如何将相机的中心对准世界的(0,0)或任何其他坐标。
在将相机直接生成的变换矩阵注入 SpriteBatch.Begin() 之后
似乎什么也没有发生。这是相机的世界位置设置为 (0,0),精灵的世界位置设置为 (0,0)。
这是生成的图像。
http://i.imgur.com/Bep7l5a.png
出于调试原因,我关闭了 alpha 混合和精灵偏移。
任何人都可以帮助我吗?另外,如果有人能告诉我如何翻转 y,那也很棒。
directx - 0x88982F50:“找不到组件”当使用 DirectXTK 的 CreateWICTextureFromMemory()
我正在开发一个(通用 Windows)c++/cx Directx 项目,该项目构建为 ac# UWP 项目中使用的 dll。
我正在使用 DirectX Toolkit 加载纹理。
我已经使用它从文件创建纹理,但现在我需要它从从 UWP 项目发送的字节数组创建纹理。但是当尝试使用 CreateWICTextureFromMemory() 时,HRESULT显示 0x88982F50:“找不到组件”
我能找到的关于这个问题的所有信息都表明字节不是正确的图像,但我在 UWP 项目中对其进行了测试,在那里我从 bingmaps 获得了字节数组(它是一个静态地图图像),我可以从这些图像中制作一个工作图像字节。
有人知道我做错了什么吗?
UWP c# 下载代码(获取字节):
Directx C++ 代码(失败):
有效的 UWP C# 测试代码(显示图像):
编辑:
好的,结果缓冲区中的第一个字节在 C++ 代码中与从 UWP 发送时不同。当我在 C++ 代码中将第一个字节更改为正确的值(作为测试)时,纹理被正确创建。
这就提出了一个问题,为什么第一个字节的值会改变?(或者我做错了什么?)
根据要求,函数 setImage() 在 c# 中如下所示:
(另外,我刚刚意识到参数名称中仍然包含“dds”,对此感到抱歉,将在我的代码中更改它,因为它具有误导性)
c++ - C++ DirectXTK 随时间改变 SpriteTint
因此,对于大学项目,我希望尝试在特定时间范围内更改精灵的色调。目的是让一组岩石在 5 秒内从灰色变为橙色(模拟加热),然后在接下来的 5 秒内再次将它们从橙色变为灰色(模拟冷却)。
这是使用 DirectXTK,特别是 SpriteBatch 完成的,但是我似乎在控制加热和冷却逻辑时遇到了一些问题。目前,岩石加热到橙色,但不会冷却下来。
下面包括岩石的更新功能,以及我用来控制冷却的另一个 HeatDelay 功能。
timeToChangeColour 初始化为 5。
任何帮助是极大的赞赏!
uwp - 错误 0x80070057 取决于包含顶点着色器代码的文件
这是我的第一个问题,请给我一点怜悯。我目前正在使用像素着色器中的以下着色器代码位:
在顶点着色器中:
现在是奇怪的部分。在我的不支持 DirectX11 的虚拟机上,如果我将上述着色器代码复制到项目框架创建的两个文件中,则此版本的代码可以工作:
虽然这个没有:
我检查并重新检查了 Visual Studio 中的编译设置,但它们在我看来是一样的。你们中有人知道在创建项目骨架期间创建的“特殊”文件有什么不同吗?
uwp - DirectXTK:将 hlsl 文件集成到模型和效果系统中
为 OpenGL ES 和 XNA 编程了一段时间后,我现在将我的一些内容更新到 XBOX One 的 DirectXTK。可悲的是,我刚刚遇到了另一个问题——即自定义着色器文件的集成。
特别是,我有以下顶点着色器:
将其加载到 IEffectFactory 实现中可以正常工作。第一步,我使用 LoadAsync 加载编译后的 hlsl 文件:
两个变量 myVShaderCode 和 mVShaderCodeSize 然后被传递到 iEffect 的实际实现中,它像这样使用它们:
可悲的是,这在运行时不起作用。相反,在 SUS3DApp1.exe 中的 0x603520B5 (ucrtbased.dll) 处出现类型为未处理的异常的错误:将无效参数传递给认为无效参数致命的函数。被抛出。调用堆栈如下所示:
想法,有人吗?我已经检查了 GetVertexShaderBytecode 中成员变量的有效性...
更新:我现在更改了着色器,以及代码的加载。奇怪的是,这部分代码现在通过了 SUSCreateDeviceResources 内部的 CreateInputLayout 阶段: void SUS3DApp1Main::SUSCreateDeviceResources() { auto loadVSTask = DX::ReadDataAsync(L"SampleVertexShader.cso"); auto loadPSTask = DX::ReadDataAsync(L"SamplePixelShader.cso");
然后在创建模型期间出现问题,它再次成为无效参数。这很奇怪,因为之前的创作效果很好。会不会是 myVShaderCode 的值丢失了?
c++ - 尚未调用 CoInitialize - (从 DirectXTK 加载 gamepad.h 而没有库)
我正在为游戏手柄类使用 DirectXTK 库。我编译了这个库,里面只有这个类,它可以工作。
如果我只将源文件添加到我的项目中,而没有库,则大小将是 ~50KB 而不是 ~500KB。但是,我收到以下错误:
关于如何解决这个问题的任何想法,所以我的可执行文件会更小?
c++ - 未检测到 Xbox One 控制器(从没有库的 DirectXTK 加载 gamepad.h)
我正在为游戏手柄类使用 DirectXTK 库。我编译了这个库,里面只有这个类,它可以工作。
如果我只将源文件添加到我的项目中,而没有库,则大小将是 ~50KB 而不是 ~500KB。
但是,在没有库的情况下使用源文件无法检测到 Xbox One 控制器。
关于如何解决这个问题的任何想法,所以我的可执行文件会更小?
c++ - 带有 Clang 的 DirectX11 显示黑色纹理(使用 Visual Studio 可以)
听到关于 Clang 的好消息,我决定给它一个机会,并在我的窗户上安装了 Clang。通过安装,它也集成到了我的 VisualStudo2015 中。一切正常,直到我尝试用 clang 编译一个小型 DirectX11 程序。First Clang 在 DirectX11 的“DirectXMath”-Headers 中遇到了一些问题。DirectX 将 __m128 SIMD 类型视为联合,而 clang 使用浮点数组。我决定删除 clang 头文件,只给编译器 microsoft 头文件。它编译时没有任何警告或错误。
但是当我启动程序时,我只看到一个大小正确且位置正确的黑色纹理。用普通的 VisualStudio-Compiler 重新编译程序可以正确显示纹理,所以我猜我的代码是正确的。
有什么办法可以帮助 Clang 吗?我想在 Windows 下更多地使用 Clang,但我不想改变我的项目想法。
一些信息(可能会有所帮助):
1.)我正在使用带有以下附加命令的 clang-cl:-fms-compatibility -fms-extensions -Qunused-arguments
2.)我正在使用 Windows 8.1 标头
3。 ) 使用 DirectXTK 绘制纹理