Example #1
0
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;
		}

	}
Example #3
0
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;
}
Example #4
0
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));

}
Example #5
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));
}