diff options
| author | Jason Maskell <[email protected]> | 2016-05-09 10:39:54 +0200 |
|---|---|---|
| committer | Jason Maskell <[email protected]> | 2016-05-09 10:39:54 +0200 |
| commit | 79b3462799c28af8ba586349bd671b1b56e72353 (patch) | |
| tree | 3b06e36c390254c0dc7f3733a0d32af213d87293 /demo/util.cpp | |
| download | archived-waveworks-archive-79b3462799c28af8ba586349bd671b1b56e72353.tar.xz archived-waveworks-archive-79b3462799c28af8ba586349bd671b1b56e72353.zip | |
Initial commit with PS4 and XBone stuff trimmed.
Diffstat (limited to 'demo/util.cpp')
| -rw-r--r-- | demo/util.cpp | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/demo/util.cpp b/demo/util.cpp new file mode 100644 index 0000000..7ef9f1e --- /dev/null +++ b/demo/util.cpp @@ -0,0 +1,98 @@ +// This code contains NVIDIA Confidential Information and is disclosed +// under the Mutual Non-Disclosure Agreement. +// +// Notice +// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES +// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT, +// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. +// +// NVIDIA Corporation assumes no responsibility for the consequences of use of such +// information or for any infringement of patents or other rights of third parties that may +// result from its use. No license is granted by implication or otherwise under any patent +// or patent rights of NVIDIA Corporation. No third party distribution is allowed unless +// expressly authorized by NVIDIA. Details are subject to change without notice. +// This code supersedes and replaces all information previously supplied. +// NVIDIA Corporation products are not authorized for use as critical +// components in life support devices or systems without express written approval of +// NVIDIA Corporation. +// +// Copyright � 2008- 2013 NVIDIA Corporation. All rights reserved. +// +// NVIDIA Corporation and its licensors retain all intellectual property and proprietary +// rights in and to this software and related documentation and any modifications thereto. +// Any use, reproduction, disclosure or distribution of this software and related +// documentation without an express license agreement from NVIDIA Corporation is +// strictly prohibited. +// + +#include "DXUT.h" + +HRESULT LoadFile(LPCTSTR FileName, ID3DXBuffer** ppBuffer) +{ + FILE* pF = NULL; + ID3DXBuffer* pBuffer = NULL; + + if(_wfopen_s(&pF, FileName, L"rb")) + goto error; + + if(fseek(pF,0,SEEK_END)) + goto error; + + const DWORD fileSize = ftell(pF); + + if(fseek(pF,0,SEEK_SET)) + goto error; + + if(FAILED(D3DXCreateBuffer(fileSize, &pBuffer))) + goto error; + + if(fileSize != fread(pBuffer->GetBufferPointer(), 1, fileSize, pF)) + goto error; + + fclose(pF); + + *ppBuffer = pBuffer; + return S_OK; + +error: + fclose(pF); + SAFE_RELEASE(pBuffer); + + return E_FAIL; +} + +HRESULT CreateTextureFromFileSRGB( + ID3D11Device* pDevice, + LPCTSTR pSrcFile, + ID3D11Resource** ppResource) +{ + HRESULT hr; + + V_RETURN(D3DX11CreateTextureFromFile(pDevice, pSrcFile, NULL, NULL, ppResource, NULL)); + + ID3D11Texture2D* pTexture2D = NULL; + hr = (*ppResource)->QueryInterface(__uuidof( ID3D11Texture2D ),(void**)&pTexture2D); + if(SUCCEEDED(hr)) { + D3D11_TEXTURE2D_DESC original_desc; + pTexture2D->GetDesc(&original_desc); + const DXGI_FORMAT srgb_format = MAKE_SRGB(original_desc.Format); + if(srgb_format != original_desc.Format) { + // Need to convert + D3D11_TEXTURE2D_DESC srgb_desc = original_desc; + srgb_desc.Format = srgb_format; + ID3D11Texture2D* pTexture2DsRGB = NULL; + hr = pDevice->CreateTexture2D(&srgb_desc, NULL, &pTexture2DsRGB); + if(SUCCEEDED(hr)) { + ID3D11DeviceContext* pDC = DXUTGetD3D11DeviceContext(); + pDC->CopyResource(pTexture2DsRGB,pTexture2D); + SAFE_RELEASE(*ppResource); + *ppResource = pTexture2DsRGB; + } + } + + SAFE_RELEASE(pTexture2D); + } + + return S_OK; +}
\ No newline at end of file |