使用DX缩放对象
Scale an object using DX
我尝试使用以下代码缩放矩阵:
D3DXMATRIX & rMatrix = m_Matrices[i];
D3DXMatrixScaling(&rMatrix, 2.0f, 2.0f, 2.0f);
i ->在循环中定义
它们不缩放对象。这很奇怪,因为如果我在一个更新网格矩阵的地方使用相同的代码,它们会工作,但这不是我需要的,因为在这个地方缩放所有的对象,所以我需要在这里使用for可以定义缩放只针对某个对象。
我很感激你的帮助!您没有缩放矩阵数组。你用相同的矩阵[2 0 0 0 | 0 2 0 0 | 0 0 2 0 | 0 0 0 1]
覆盖它们。您需要将原始矩阵与D3DXMatrixScaling
返回的缩放矩阵相乘以将它们连接起来。比如:
D3DXMATRIX scaleMatrix;
D3DXMatrixScaling(&scaleMatrix, 2.0f, 2.0f, 2.0f);
for( i = 0; i < /*...*/ )
D3DXMatrixMultiply(&m_Matrices[i], &m_Matrices[i], scaleMatrix);
顺便说一句,D3DXMath是古老的,其余的D3DX9/D3DX10是每个MSDN弃用。
看看DirectXMath和DirectXMath的SimpleMath包装器
我很难理解你的问题。如果我没有回答你的问题,请纠正我!
所以你必须分离你的渲染函数。你需要计算两次世界矩阵。一个是需要缩放的对象,在计算了没有缩放的世界矩阵之后。
世界矩阵包含顶点位置的信息,你必须改变世界矩阵每个你想要平移,旋转,调整大小的物体。通常情况下,每个网格都围绕原点和世界矩阵移动/旋转/缩放到你想看到网格的位置:)
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 计算缩放多边形的比例,得到给定的多边形面积
- QwtPlot具有相等的轴和自动缩放
- 如何在directx/c++中进行平移/缩放操作
- 在Qt中实现无限可缩放的画布
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 改变或缩放两个正态分布以具有特定的相关系数
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在OpenGL中正确旋转和缩放对象?
- OpenCV 检测多个旋转的缩放对象
- 食人魔:模拟透视视图缩放对象
- 仅缩放场景中的一个对象OpenGL 3.0
- 将对象从中心点缩放特定数字
- 如何允许用户在opengl中缩放一个对象而不缩放另一个对象
- 如何沿任意轴缩放对象(在三维空间中)
- 如何定期缩放二维对象
- 使用DX缩放对象