首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX工具包C++ SpriteBatch绘制矩形

DirectX工具包C++ SpriteBatch绘制矩形
EN

Stack Overflow用户
提问于 2015-10-01 11:39:59
回答 1查看 1.5K关注 0票数 0

我正在使用DirectX 11、DirectX工具包和C++。如何创建带有蓝色边框的矩形以用于sprite批处理?我猜我需要在内存中创建一个纹理,也许有一个1像素的蓝色边框?

代码语言:javascript
复制
ComPtr<ID3D11ShaderResourceView>    spriteSheet_;

ComPtr<ID3D11Resource> resource;
    CreateDDSTextureFromFile(d3dDevice_, L"mytex.dds", resource.GetAddressOf(),
        spriteSheet_.ReleaseAndGetAddressOf());

batch->Draw(spriteSheet_.Get(), position, &sourceRect, DirectX::Colors::White,
        rotation_, spriteOrigin_, scale_, DirectX::SpriteEffects_None, depth_);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-01 23:16:03

您可以使用SpriteBatch来绘制单像素纹理,如您所描述的--您可以使用白色纹理,并使用SpriteBatch着色使其变为蓝色。

下面是在Direct3D 11中以编程方式创建1x1白色纹理的一些简单代码:

代码语言:javascript
复制
    Microsoft::WRL::ComPtr<ID3D11ShaderResourceView> pWhiteTexture;

    static const uint32_t s_pixel = 0xffffffff;

    D3D11_SUBRESOURCE_DATA initData = { &s_pixel, sizeof(uint32_t), 0 };

    D3D11_TEXTURE2D_DESC desc;
    memset( &desc, 0, sizeof(desc) );
    desc.Width = desc.Height = desc.MipLevels = desc.ArraySize = 1;
    desc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    desc.SampleDesc.Count = 1;
    desc.Usage = D3D11_USAGE_IMMUTABLE;
    desc.BindFlags = D3D11_BIND_SHADER_RESOURCE;

    Microsoft::WRL::ComPtr<ID3D11Texture2D> tex;
    HRESULT hr = mDevice->CreateTexture2D( &desc, &initData, &tex );

    DX::ThrowIfFailed(hr);

    D3D11_SHADER_RESOURCE_VIEW_DESC SRVDesc;
    memset( &SRVDesc, 0, sizeof( SRVDesc ) );
    SRVDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
    SRVDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
    SRVDesc.Texture2D.MipLevels = 1;

    hr = mDevice->CreateShaderResourceView( tex.Get(), &SRVDesc, &pWhiteTexture );

    DX::ThrowIfFailed(hr);

一个更有效的解决方案将是使用PrimitiveBatch绘制一个蓝色四边形,您希望它的位置。

请参阅DirectX工具包教程简单渲染

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32886708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档