@@ -342,13 +342,13 @@ HRESULT CreateTexture( ID3D11Device* pDevice, const Image* srcImages, size_t nim
342
342
ID3D11Resource** ppResource )
343
343
{
344
344
return CreateTextureEx ( pDevice, srcImages, nimages, metadata,
345
- D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0 , 0 ,
345
+ D3D11_USAGE_DEFAULT, D3D11_BIND_SHADER_RESOURCE, 0 , 0 , false ,
346
346
ppResource );
347
347
}
348
348
349
349
_Use_decl_annotations_
350
350
HRESULT CreateTextureEx ( ID3D11Device* pDevice, const Image* srcImages, size_t nimages, const TexMetadata& metadata,
351
- D3D11_USAGE usage, unsigned int bindFlags, unsigned int cpuAccessFlags, unsigned int miscFlags,
351
+ D3D11_USAGE usage, unsigned int bindFlags, unsigned int cpuAccessFlags, unsigned int miscFlags, bool forceSRGB,
352
352
ID3D11Resource** ppResource )
353
353
{
354
354
if ( !pDevice || !srcImages || !nimages || !ppResource )
@@ -468,6 +468,8 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
468
468
// Create texture using static initialization data
469
469
HRESULT hr = E_FAIL;
470
470
471
+ DXGI_FORMAT tformat = ( forceSRGB ) ? MakeSRGB ( metadata.format ) : metadata.format ;
472
+
471
473
switch ( metadata.dimension )
472
474
{
473
475
case TEX_DIMENSION_TEXTURE1D:
@@ -476,7 +478,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
476
478
desc.Width = static_cast <UINT>( metadata.width );
477
479
desc.MipLevels = static_cast <UINT>( metadata.mipLevels );
478
480
desc.ArraySize = static_cast <UINT>( metadata.arraySize );
479
- desc.Format = metadata. format ;
481
+ desc.Format = tformat ;
480
482
desc.Usage = usage;
481
483
desc.BindFlags = bindFlags;
482
484
desc.CPUAccessFlags = cpuAccessFlags;
@@ -493,7 +495,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
493
495
desc.Height = static_cast <UINT>( metadata.height );
494
496
desc.MipLevels = static_cast <UINT>( metadata.mipLevels );
495
497
desc.ArraySize = static_cast <UINT>( metadata.arraySize );
496
- desc.Format = metadata. format ;
498
+ desc.Format = tformat ;
497
499
desc.SampleDesc .Count = 1 ;
498
500
desc.SampleDesc .Quality = 0 ;
499
501
desc.Usage = usage;
@@ -515,7 +517,7 @@ HRESULT CreateTextureEx( ID3D11Device* pDevice, const Image* srcImages, size_t n
515
517
desc.Height = static_cast <UINT>( metadata.height );
516
518
desc.Depth = static_cast <UINT>( metadata.depth );
517
519
desc.MipLevels = static_cast <UINT>( metadata.mipLevels );
518
- desc.Format = metadata. format ;
520
+ desc.Format = tformat ;
519
521
desc.Usage = usage;
520
522
desc.BindFlags = bindFlags;
521
523
desc.CPUAccessFlags = cpuAccessFlags;
@@ -552,7 +554,7 @@ HRESULT CreateShaderResourceViewEx( ID3D11Device* pDevice, const Image* srcImage
552
554
553
555
ScopedObject<ID3D11Resource> resource;
554
556
HRESULT hr = CreateTextureEx ( pDevice, srcImages, nimages, metadata,
555
- usage, bindFlags, cpuAccessFlags, miscFlags,
557
+ usage, bindFlags, cpuAccessFlags, miscFlags, forceSRGB,
556
558
&resource );
557
559
if ( FAILED (hr) )
558
560
return hr;
0 commit comments