Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool Texture::Create(Texture::Description description, Texture::Mip** mips)
- {
- D3D11_SUBRESOURCE_DATA* textureData;
- bool result;
- D3D11_TEXTURE2D_DESC textureDesc;
- ZeroMemory(&textureDesc, sizeof(textureDesc));
- textureDesc.Width = description.Width;
- textureDesc.Height = description.Height;
- textureDesc.MipLevels = description.Mips;
- textureDesc.ArraySize = description.Depth;
- textureDesc.Format = (DXGI_FORMAT)description.Format;
- textureDesc.SampleDesc.Count = 1;
- textureDesc.SampleDesc.Quality = 0;
- textureDesc.Usage = (D3D11_USAGE)(D3D11_USAGE_IMMUTABLE * description.Flags & Texture::Flags::Immutable);
- textureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE;
- textureDesc.CPUAccessFlags = 0;
- textureDesc.MiscFlags = 0;
- textureData = new D3D11_SUBRESOURCE_DATA[description.Mips];
- ZeroMemory(&textureData, sizeof(textureData));
- for(UByte i = description.Mips; i > 0; --i)
- {
- textureData[i].pSysMem = mips[i]->Data;
- textureData[i].SysMemPitch = mips[i]->Width * 4;
- textureData[i].SysMemSlicePitch = mips[i]->Height;
- }
- result = Handle::Window->Device->CreateTexture2D(&textureDesc, textureData, &mTexture);
- D3D11_SHADER_RESOURCE_VIEW_DESC rvDesc;
- ZeroMemory(&rvDesc, sizeof(rvDesc));
- rvDesc.Format = textureDesc.Format;
- rvDesc.ViewDimension = D3D11_SRV_DIMENSION_TEXTURE2D;
- rvDesc.Texture2D.MostDetailedMip = 0;
- rvDesc.Texture2D.MipLevels = description.Mips;
- result = Handle::Window->Device->CreateShaderResourceView(mTexture, &rvDesc, &mTextureRV);
- delete textureData;
- textureData = 0;
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment