public unsafe void TestCreation()
        {
            // Define variables and constants
            const uint NUM_TEXTURES     = 10U;
            const uint TEXEL_SIZE_BYTES = 16;
            const uint TEX_WIDTH        = 512U;
            const uint TEX_HEIGHT       = 128U;
            const uint TEX_DEPTH        = 32U;
            uint       numMipsPerTex    = TextureUtils.GetNumMips(TEX_WIDTH, TEX_HEIGHT, TEX_DEPTH);
            IntPtr     mockDataStart    = new IntPtr(100);

            // Set up context


            // Execute
            InitialResourceDataDesc[] initialDataArray = InitialResourceDataDesc.CreateDataArr(
                mockDataStart,
                NUM_TEXTURES,
                numMipsPerTex,
                TEX_WIDTH,
                TEX_HEIGHT,
                TEX_DEPTH,
                TEXEL_SIZE_BYTES
                );

            // Assert outcome
            Assert.AreEqual((int)(NUM_TEXTURES * numMipsPerTex), initialDataArray.Length);
            for (uint tex = 0U; tex < NUM_TEXTURES; ++tex)
            {
                for (uint mip = 0U; mip < numMipsPerTex; ++mip)
                {
                    InitialResourceDataDesc thisDesc = initialDataArray[numMipsPerTex * tex + mip];
                    IntPtr expectedDataStart         = mockDataStart;
                    expectedDataStart += (int)(TextureUtils.GetSize(TEXEL_SIZE_BYTES, true, TEX_WIDTH, TEX_HEIGHT, TEX_DEPTH) * tex);
                    for (uint i = 0U; i < mip; ++i)
                    {
                        uint mipWidth  = TextureUtils.GetDimensionForMipLevel(TEX_WIDTH, i);
                        uint mipHeight = TextureUtils.GetDimensionForMipLevel(TEX_HEIGHT, i);
                        uint mipDepth  = TextureUtils.GetDimensionForMipLevel(TEX_DEPTH, i);
                        expectedDataStart += (int)TextureUtils.GetSize(TEXEL_SIZE_BYTES, false, mipWidth, mipHeight, mipDepth);
                    }

                    Assert.AreEqual(expectedDataStart, thisDesc.Data);
                    Assert.AreEqual(TextureUtils.GetDimensionForMipLevel(TEX_WIDTH, mip) * TEXEL_SIZE_BYTES, thisDesc.DataRowStrideBytes);
                    Assert.AreEqual(
                        TextureUtils.GetDimensionForMipLevel(TEX_WIDTH, mip)
                        * TextureUtils.GetDimensionForMipLevel(TEX_HEIGHT, mip)
                        * TEXEL_SIZE_BYTES,
                        thisDesc.DataSliceStrideBytes
                        );
                }
            }
        }
Ejemplo n.º 2
0
        public void TestGetDimensionsForMipLevel()
        {
            // Define variables and constants


            // Set up context


            // Execute


            // Assert outcome
            Assert.AreEqual(128U, TextureUtils.GetDimensionForMipLevel(128U, 0U));
            Assert.AreEqual(32U, TextureUtils.GetDimensionForMipLevel(128U, 2U));
            Assert.AreEqual(1U, TextureUtils.GetDimensionForMipLevel(128U, 100000U));
            Assert.AreEqual(500U, TextureUtils.GetDimensionForMipLevel(500U, 0U));
        }
Ejemplo n.º 3
0
 public uint MipWidth(uint mipIndex)
 {
     Assure.LessThan(mipIndex, NumMips, "Mip index out of bounds.");
     return(TextureUtils.GetDimensionForMipLevel(width, mipIndex));
 }