我正在尝试(使用2D Directx9引擎库)在顶点缓冲区中旋转/转换一组点。
我理解在3D系统中如何做到这一点 - 即使用渲染管道的顶点着色器阶段和变换基质......
但我不确定是否适用于2D? (或者我错了)。我不知道顶点着色器阶段在2D或至少在我正在使用的2D引擎库中发生的位置(来自Programming2DGames一书)?或者它是否真的发生了?
基本上我可以使用像D3DXMatrixTransformation2D()这样的东西来创建变换矩阵,我知道如何将它应用于LPD3DXSPRITE对象(使用Sprite-> SetTransform()),但是如何将该变换矩阵应用于集合10个坐标存储在顶点缓冲区而不是精灵中。
非常感谢任何帮助或建议。感谢
答案 0 :(得分:0)
我认为你有两个选择:
1)创建第二个顶点缓冲区并使用循环中的D3DXVec2TransformCoord变换所有顶点。如果您不需要旧顶点,请使用单个缓冲区。
2)使用顶点着色器:
ID3DXEffect* effect;
MATRIX matrixToTransfrom;
UINT passes;
effect->SetTechnique(technique);
effect->SetVector(handleMatrix, &matrixToTransform);
effect->Begin(&passes, 0);
effect->BeginPass(0);
sprite->Begin(xxx);
// drawing
sprite->End();
effect->EndPass();
effect->End();