bool TextureClass::Initialize(ID3D11Device* pDevice, WCHAR *lpwFileName) { HRESULT result = S_OK; result = D3DX11CreateShaderResourceViewFromFileW(pDevice, lpwFileName, NULL, NULL, &m_pTextureView, NULL); assert(SUCCEEDED(result)); return SUCCEEDED(result); }
Kiwi::Texture* D3DAssetLoader::LoadTexture( Kiwi::Renderer* renderer, std::wstring textureName, std::wstring filename ) { assert( m_device != 0 ); try { Kiwi::Texture* texture = 0; //ID3D11Texture2D* texture = 0; ID3D11ShaderResourceView* newShaderRes = 0; HRESULT hr = D3DX11CreateShaderResourceViewFromFileW( renderer->GetDevice(), filename.c_str(), NULL, NULL, &newShaderRes, NULL ); if( FAILED( hr ) ) { MessageBox( NULL, L"B", L"A", MB_OK ); throw Kiwi::Exception( L"D3DAssetLoader::LoadTexture", L"Failed to create shader resource view for texture '" + filename + L"'" ); } texture = new Kiwi::Texture( textureName, filename, 0, newShaderRes ); return texture; } catch( ... ) { throw; } }
void Model::LoadMaterialResources(MeshMaterial& material, const wstring& directory, ID3D11Device* device) { // Load the diffuse map wstring diffuseMapPath = directory + material.DiffuseMapName; if (material.DiffuseMapName.length() > 0 && FileExists(diffuseMapPath.c_str())) DXCall(D3DX11CreateShaderResourceViewFromFileW(device, diffuseMapPath.c_str(), NULL, NULL, &material.DiffuseMap, NULL)); else material.DiffuseMap = NULL; // Load the normal map wstring normalMapPath = directory + material.NormalMapName; if (material.NormalMapName.length() > 0 && FileExists(normalMapPath.c_str())) DXCall(D3DX11CreateShaderResourceViewFromFileW(device, normalMapPath.c_str(), NULL, NULL, &material.NormalMap, NULL)); else material.NormalMap = NULL; }
void Terrain::Init(ID3D11Device* device, ID3D11DeviceContext* dc, const InitInfo& initInfo) { mInfo = initInfo; // Divide heightmap into patches such that each patch has CellsPerPatch. mNumPatchVertRows = ((mInfo.HeightmapHeight-1) / CellsPerPatch) + 1; mNumPatchVertCols = ((mInfo.HeightmapWidth-1) / CellsPerPatch) + 1; mNumPatchVertices = mNumPatchVertRows*mNumPatchVertCols; mNumPatchQuadFaces = (mNumPatchVertRows-1)*(mNumPatchVertCols-1); LoadHeightmap(); Smooth(); CalcAllPatchBoundsY(); BuildQuadPatchVB(device); BuildQuadPatchIB(device); BuildHeightmapSRV(device); std::vector<std::wstring> layerFilenames; layerFilenames.push_back(mInfo.LayerMapFilename0); layerFilenames.push_back(mInfo.LayerMapFilename1); layerFilenames.push_back(mInfo.LayerMapFilename2); layerFilenames.push_back(mInfo.LayerMapFilename3); layerFilenames.push_back(mInfo.LayerMapFilename4); mLayerMapArraySRV = d3dHelper::CreateTexture2DArraySRV(device, dc, layerFilenames); HR(D3DX11CreateShaderResourceViewFromFileW(device, mInfo.BlendMapFilename.c_str(), 0, 0, &mBlendMapSRV, 0)); }
Sky::Sky(ID3D11Device* device, const std::wstring& cubemapFilename, float skySphereRadius) { HR(D3DX11CreateShaderResourceViewFromFileW(device, cubemapFilename.c_str(), 0, 0, &mCubeMapSRV, 0)); GeometryGenerator::MeshData sphere; GeometryGenerator geoGen; geoGen.CreateSphere(skySphereRadius, 30, 30, sphere); std::vector<XMFLOAT3> vertices(sphere.Vertices.size()); for(size_t i = 0; i < sphere.Vertices.size(); ++i) { vertices[i] = sphere.Vertices[i].Position; } D3D11_BUFFER_DESC vbd; vbd.Usage = D3D11_USAGE_IMMUTABLE; vbd.ByteWidth = sizeof(XMFLOAT3) * vertices.size(); vbd.BindFlags = D3D11_BIND_VERTEX_BUFFER; vbd.CPUAccessFlags = 0; vbd.MiscFlags = 0; vbd.StructureByteStride = 0; D3D11_SUBRESOURCE_DATA vinitData; vinitData.pSysMem = &vertices[0]; HR(device->CreateBuffer(&vbd, &vinitData, &mVB)); mIndexCount = sphere.Indices.size(); D3D11_BUFFER_DESC ibd; ibd.Usage = D3D11_USAGE_IMMUTABLE; ibd.ByteWidth = sizeof(USHORT) * mIndexCount; ibd.BindFlags = D3D11_BIND_INDEX_BUFFER; ibd.CPUAccessFlags = 0; ibd.StructureByteStride = 0; ibd.MiscFlags = 0; std::vector<USHORT> indices16; indices16.assign(sphere.Indices.begin(), sphere.Indices.end()); D3D11_SUBRESOURCE_DATA iinitData; iinitData.pSysMem = &indices16[0]; HR(device->CreateBuffer(&ibd, &iinitData, &mIB)); }