DirectX 11 移动我的正方形
DirectX 11 Moving my square
我正在学习 DirectX 11,并且已经达到了显示正方形的程度。我的 4 个顶点定义为:
VertexPos vertices[] =
{
XMFLOAT3(-0.2f, 0.2f, 0.2f),
XMFLOAT3(0.2f, 0.2f, 0.2f),
XMFLOAT3(-0.2f, -0.2f, 0.2f),
XMFLOAT3(0.2f, -0.2f, 0.2f)
};
然后,他们经历必要的阶段以呈现到屏幕上(例如 DirectX 编程的 hello 世界)。我结合了来自直接输入演示的一些代码,并希望能够使用箭头键移动正方形。到目前为止,我有:
void SquareMove::Update( float dt )
{
keyboardDevice_->GetDeviceState(sizeof(keyboardKeys_), (LPVOID)&keyboardKeys_);
// Button down event.
if (KEYDOWN(prevKeyboardKeys_, DIK_DOWN) && !KEYDOWN(keyboardKeys_, DIK_DOWN))
{
PostQuitMessage(0);
}
(这是为了测试我的例如向下箭头回调是否有效)。我现在不知如何实际实施移动广场所需的步骤。我知道这与D3DXMatrixTranslation有关,但我很难看到它们如何聚集在一起以执行必要的操作。谢谢
我不太清楚你是否真的理解翻译矩阵的效果。有很多很棒的教程可以指导您完成实现细节,所以我只想分享我感兴趣的内容 - 我首先理解渲染的方式。
简而言之,你必须学会可视化数学对你的对象的影响。正方形的顶点当前位于所谓的"模型"和"局部"空间中。也就是说,它们只是提供关于模型形状和大小(与 0,0,0 世界坐标相关的)的实际信息。现在你必须把它放在你的"世界"中。为此,您必须将对象的每个顶点移动("平移")到新位置,保持您刚刚在模型空间中定义的大小和形状 - 以相同的长度和方向平移每个顶点,以便具有相同向量的单词,将相同的计算应用于每个顶点。
在渲染中,对象的转换是通过矩阵实现的。每个矩阵在某些位置都有值,当与对象的坐标相乘时,这些值将以某种方式改变它。它们随后在对象坐标上的应用(通过乘法)应用了随后的转换 - 对象可能首先被旋转 - 这将围绕你的世界中心旋转它,即围绕(0,0,0),然后平移,然后再次旋转......这只是 3 个矩阵的乘法。
具体的实现可以在很多地方找到:http://www.directxtutorial.com/Lesson.aspx?lessonid=9-4-5
只是为了完整起见,这就是我设法做到的。在渲染函数中,我添加了以下内容
XMMATRIX m_Translation = XMMatrixTranslation(0.0f, fY, 0.0f);
XMMATRIX mvp = world*vpMatrix_*m_Translation;
(以前只是world*viewPortMatrix
)
其中 fY 通过按钮关闭事件进行控制
if (KEYDOWN(prevKeyboardKeys_, DIK_DOWN) && !KEYDOWN(keyboardKeys_, DIK_DOWN))
{
fY -= 0.1f;
}
当运行应用程序时,我的对象会移动!
- 我的神经网络不起作用 [XOR 问题]
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 我的字符计数代码计算错误.为什么
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- cmake在我的项目中所需的所有静态库都不成功
- 为什么我的代码在输出中增加了93天
- 我的简单if-else语句是如何无法访问的代码
- 为什么我的for循环不能正确获取argv
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 0-1背包代码中的错误.我的代码中有什么错误
- 当我的阵列太大时出现分段错误
- 如何确认我的constexpr表达式实际上已经在编译时执行
- 为什么二进制搜索在我的测试中不起作用
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 当我在main中声明了我的2d数组时,为什么我的程序会退出
- OpenGL在启用深度测试时不会丢弃我的碎片
- 我的任务是在框架内打印一个字符串,例如一个正方形
- DirectX 11 移动我的正方形
- 我必须在c++中画一个正方形里面的正方形