在d3d11.2中使用平铺资源技术的示例代码?

时间:2017-09-07 03:28:01

标签: directx directx-11

我在每次调用UpdateTileMapping和UpdateTiles时得到一个奇怪的结果,就像Mars Tiled Resource Sample一样:

void CalledEveryFrame()
{
    vector<D3D11_TILED_RESOURCE_COORDINATE> coordinates; // 4 diffrent coordinates
    vector<D3D11_TIL_REGION_SIZE> regions; // 4 as same. but only set the NumTiles=1
    vector<UINT> offsets(4, 0);
    vector<UINT> rangeFlags(4, 0);
    vector<UINT> rangeTileCounts(4, 1);

    deviceContext->UpdateTileMappings(myMiscTexture, 4, coordinates.data(), 
        regions.data(), myMiscBuffer, 4, rangFlags.data(), offsets.data(). 
        rangeTileCounts.data(), D3D11_TILE_MAPPING_NO_OVERWRITE);

    map<int, vector<float>> myTileData; // 4 with different data.
    for (int index = 0; index < coordinates.size(); index++)
    {
         D3D11_TILED_RESOURCE_COORDINATE coord = coordinate[index];
         D3D11_TILE_REGION_SIZE region = regions[index];
         deviceContext->UpdateTiles(myMiscTexture, &coord, &region, myTileData[index].data(), D3D11_TILE_COPY_NO_OVERWRITE);
    }
}

我总是在不同的坐标下得到4个相同的TileData节目。

如果我用另外4个坐标复制上面的代码:

void CalledEveryFrame()
{
    UpdateTileMappings(coordinates);
    for(coordinates)        
    {
        UpdateTiles(TileData);
    }

    UpdateTileMappings(coordinates2);
    for(coordinates2)
    {
        UpdateTiles(TileData2);
    }
}

我总是得到8个相同的TileData显示,为什么?

0 个答案:

没有答案