D3DXSprite 并显示纹理并以不同方式旋转它们

发布于 2024-11-29 13:21:02 字数 110 浏览 0 评论 0原文

我有很多纹理要在屏幕上显示,其中一些纹理可能会有旋转或其他变换。所有变换独立。我需要为每个独立纹理创建 D3DXSprite 吗?因为,如果我只创建一个精灵并应用变换,它会对精灵中的每个纹理产生影响。谢谢。

i have many textures to show on the screen, some of these textures may have rotation or other transformation. All transformation independent. Do i need to create D3DXSprite for every independent texture? Because, if i create only one sprite and apply transformation it have an affect for every texture in the sprite. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

紫竹語嫣☆ 2024-12-06 13:21:02

否,正如 ID3DXSprite::Draw() 的文档所述:

要缩放、旋转或平移精灵,请在调用 ID3DXSprite 之前使用包含缩放、旋转和平移 (SRT) 值的矩阵调用 ID3DXSprite::SetTransform: :画。有关在矩阵中设置 SRT 值的信息,请参阅矩阵变换。

所以它看起来像这样:

d3dxSpriteObject.Begin([...]);
for(int i=0; i<numTextures; i++) 
{
    d3dxSpriteObject.SetTransform(matrix);
    d3dxSpriteObject.Draw(texture[i], NULL, textureCenter[i], texturePos[i], 0xffffffff);
}
d3dxSpriteObject.End();

No, as the documentation to ID3DXSprite::Draw() states:

To scale, rotate, or translate a sprite, call ID3DXSprite::SetTransform with a matrix that contains the scale, rotate, and translate (SRT) values, before calling ID3DXSprite::Draw. For information about setting SRT values in a matrix, see Matrix Transforms.

So it would look something like this:

d3dxSpriteObject.Begin([...]);
for(int i=0; i<numTextures; i++) 
{
    d3dxSpriteObject.SetTransform(matrix);
    d3dxSpriteObject.Draw(texture[i], NULL, textureCenter[i], texturePos[i], 0xffffffff);
}
d3dxSpriteObject.End();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文