예제 #1
0
void Graphics::drawSkinnedMesh(SkinnedMesh* skinnedMesh)
{
	// Set effect data
	HR(mFX->SetTechnique(mhTexTech));

	setEffectParameters(skinnedMesh->getWorldMatrix());

	// Begin passes.
	UINT numPasses = 0;
	HR(mFX->Begin(&numPasses, 0));
	for(UINT i = 0; i < numPasses; ++i)
	{
		HR(mFX->BeginPass(i));
		skinnedMesh->drawFrameHierarchy();
		HR(mFX->EndPass());
	}
	HR(mFX->End());
}
예제 #2
0
void Graphics::drawMesh(Mesh* mesh)
{
	HR(mFX->SetTechnique(mhTexTech));
	setEffectParameters(mesh->getWorldMatrix());

	HR(mFX->Begin(0, 0));
	HR(mFX->BeginPass(0));

	vector<IDirect3DTexture9*>* textures = mesh->getTextures();
	ID3DXMesh* d3dmesh = mesh->getMesh();

	for(int i = 0; i < textures->size(); i++)
	{
		HR(mFX->SetTexture(mhTex, (*textures)[i]));
		HR(mFX->CommitChanges());
		d3dmesh->DrawSubset(i);
	}

	HR(mFX->EndPass());
	HR(mFX->End());
}
예제 #3
0
void Graphics::drawBoundingBox(Object3D* object, D3DXCOLOR color, float opacity)
{
	// Set effect data
	HR(mFX->SetTechnique(mhTexTech));
	Material material(color, 8.0f);
	material.diffuse.a = opacity;

	D3DXMATRIX S;
	D3DXMatrixScaling(&S, object->getAABB().getDimensions().width, object->getAABB().getDimensions().height, object->getAABB().getDimensions().depth);

	setEffectParameters(S*object->getWorldMatrix());

	// Set stream source and vertex declarations
	HR(gd3dDevice->SetVertexDeclaration(VertexPNT::Decl));
	HR(gd3dDevice->SetStreamSource(0, mTexturedCubeVB, 0, sizeof(VertexPNT)));
	HR(gd3dDevice->SetIndices(mTexturedCubeIB));

	HR(gd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true));
	HR(gd3dDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA));
	HR(gd3dDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA));

	HR(mFX->SetTexture(mhTex, mWhiteTexture));
	HR(mFX->SetRawValue(mhObjectMaterial, (void*)&material, 0, sizeof(Material)));

	// Begin passes.
	UINT numPasses = 0;
	HR(mFX->Begin(&numPasses, 0));
	for(UINT i = 0; i < numPasses; ++i)
	{
		HR(mFX->BeginPass(i));
		HR(gd3dDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 24, 0, 12));
		HR(mFX->EndPass());
	}
	HR(mFX->End());

	HR(gd3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, false));
}
HRESULT XAudio2SourceVoiceProxy::SetEffectParameters(UINT32 EffectIndex, const void * pParameters, UINT32 ParametersByteSize, UINT32 OperationSet)
{
	setEffectParameters(EffectIndex, buffer_to_vector(pParameters, ParametersByteSize), OperationSet);
	return S_OK;
}