Esempio n. 1
0
File: Sky.cpp Progetto: jcrm/DX
void Sky::init(ID3D10Device* device, ID3D10ShaderResourceView* cubemap, float radius){
	md3dDevice = device;
	mCubeMap   = cubemap;
	mVertexType = 1;

	mTech			= fx::SkyFX->GetTechniqueByName("SkyTech");
	mfxWVPVar		= fx::SkyFX->GetVariableByName("gWVP")->AsMatrix();
	mfxWorldVar		= fx::SkyFX->GetVariableByName("gWorld")->AsMatrix();
	mfxCubeMapVar	= fx::SkyFX->GetVariableByName("gCubeMap")->AsShaderResource();

	std::vector<D3DXVECTOR3> vertices;
	IndexList indices;

	BuildGeoSphere(2, radius, vertices, indices);

	VertexList skyVerts(vertices.size());
	for(size_t i = 0; i < vertices.size(); ++i){
		// Scale on y-axis to turn into an ellipsoid to make a flatter Sky surface
		skyVerts[i].pos = 0.5f*vertices[i];
	}
	mNumVertices = skyVerts.size();
	GfxObj::buildVB(skyVerts);

	mNumIndices = (UINT)indices.size();
	mNumFaces = mNumIndices*3;

	GfxObj::buildIB(indices);
}
Esempio n. 2
0
void Sky::init(ID3D10Device* device, BREAKOUT* g, float radius)
{
	md3dDevice = device;

	HR(D3DX10CreateShaderResourceViewFromFile(device, 
		L".\\textures\\BackgroundCube.dds", 0, 0, &mCubeMap, 0 ));

	game = g;

	mTech         = g->skyFX->GetTechniqueByName("SkyTech");
	mfxWVPVar     = g->skyFX->GetVariableByName("gWVP")->AsMatrix();
	mfxCubeMapVar = g->skyFX->GetVariableByName("gCubeMap")->AsShaderResource();


	std::vector<D3DXVECTOR3> vertices;
	std::vector<DWORD> indices;

	BuildGeoSphere(2, radius, vertices, indices);

	std::vector<SkyVertex> skyVerts(vertices.size());
	for(size_t i = 0; i < vertices.size(); ++i)
	{
		// Scale on y-axis to turn into an ellipsoid to make a flatter Sky surface
		skyVerts[i].pos = 0.5f*vertices[i];
	}

	D3D10_BUFFER_DESC vbd;
    vbd.Usage = D3D10_USAGE_IMMUTABLE;
	vbd.ByteWidth = sizeof(SkyVertex) * (UINT)skyVerts.size();
    vbd.BindFlags = D3D10_BIND_VERTEX_BUFFER;
    vbd.CPUAccessFlags = 0;
    vbd.MiscFlags = 0;
    D3D10_SUBRESOURCE_DATA vinitData;
    vinitData.pSysMem = &skyVerts[0];
    HR(md3dDevice->CreateBuffer(&vbd, &vinitData, &mVB));

	mNumIndices = (UINT)indices.size();

	D3D10_BUFFER_DESC ibd;
    ibd.Usage = D3D10_USAGE_IMMUTABLE;
	ibd.ByteWidth = sizeof(DWORD) * mNumIndices;
    ibd.BindFlags = D3D10_BIND_INDEX_BUFFER;
    ibd.CPUAccessFlags = 0;
    ibd.MiscFlags = 0;
    D3D10_SUBRESOURCE_DATA iinitData;
    iinitData.pSysMem = &indices[0];
    HR(md3dDevice->CreateBuffer(&ibd, &iinitData, &mIB));
}