【问题标题】:Sprite.Draw() draws my textures too smallSprite.Draw() 将我的纹理绘制得太小
【发布时间】:2011-09-12 20:16:37
【问题描述】:

我在这样的 Windows.Form 中声明了一个设备 + 精灵

PresentParameters presentParameters = new PresentParameters();
presentParameters.Windowed = true;
presentParameters.SwapEffect = SwapEffect.Copy;

var device = new Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, this, CreateFlags.HardwareVertexProcessing, presentParameters);

var sprite = new Sprite(device);

我通过TextureLoader.FromFile(device, "image.png");加载了一个纹理

在我的 Draw 方法中,我开始了设备场景,然后是精灵场景,然后我写了 sprite.Draw2D(texture, PointF.Empty, 0, PointF.Empty, Color.White);

绘图本身有效,但它只绘制了放大到屏幕的大部分图像(如 90%)

我也尝试使用具有给定纹理大小的源矩形,但发生了同样的错误

有什么建议吗?

【问题讨论】:

    标签: c# .net directx sprite


    【解决方案1】:

    我在 C++ DirectX 方面经验丰富,但对 C# DirectX 没有经验,所以对此持保留态度。

    根据我使用 Sprite 界面的经验,您需要像使用 3D 对象一样进行缩放、旋转和平移。您可能忘记了缩放。这是我的更新函数的代码。

    void Button::Update()
    {
        Sprite->Begin(D3DXSPRITE_ALPHABLEND);
        D3DXMATRIX trans;
        D3DXMATRIX scale;
        D3DXMATRIX world;
        D3DXMatrixIdentity(&world);
        D3DXMatrixTranslation(&trans, pos.x, pos.y, 0.0f);
        D3DXMatrixScaling(&scale, scaleFactor, scaleFactor, 1.0f);
        world = scale * trans;
        Sprite->SetTransform(&world);
        Sprite->Draw(buttonTexture, NULL, NULL, &D3DXVECTOR3(-width2, -height2, 0.0), whitecol);
        Sprite->End();
    }
    

    诚然,这不是一种非常面向对象的做事方式,但它适合我的需要。

    【讨论】:

    • 谢谢,这为我指明了正确的方向。对于使用 SlimDX 的其他人,请查看 Sprite.Transform = Matrix.Scaling(0.1, 0.1, 0.1)
    【解决方案2】:

    警告:我不是 DirectX 专家,但我遇到了同样的问题。

    当您加载精灵时,它会扩展精灵以适应每个维度都是 2 的幂的大小。例如,如果您的精灵是 200 x 65,则精灵的宽度将为 256(图像将是扩大到 256 的宽度,稍微增加)128(几乎是高度的两倍)。

    当您绘制图像时,它几乎是您预期高度的两倍。

    我的解决方案是修改我的图像文件,使其高度和宽度为 2 倍,然后仅绘制原始大小的部分。

    【讨论】:

    • OMFG 谢谢。我在正在开发的游戏中遇到了类似的问题,我无法弄清楚为什么我的 384x48 按钮似乎被放大了,然后 384x48 矩形切断了底部和右侧边缘。我完全忘记了 384 和 48 不是 2 的幂。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多