Ejemplo n.º 1
0
void Material::ResetToDefaults()
{
    // Needs to be a no-op when async loading, as this does a GetResource() which is not allowed from worker threads
    if (!Thread::IsMainThread())
        return;

    SetNumTechniques(1);
    SetTechnique(0, GetSubsystem<ResourceCache>()->GetResource<Technique>("Techniques/NoTexture.xml"));

    textures_.Clear();

    batchedParameterUpdate_ = true;
    shaderParameters_.Clear();
    SetShaderParameter("UOffset", Vector4(1.0f, 0.0f, 0.0f, 0.0f));
    SetShaderParameter("VOffset", Vector4(0.0f, 1.0f, 0.0f, 0.0f));
    SetShaderParameter("MatDiffColor", Vector4::ONE);
    SetShaderParameter("MatEmissiveColor", Vector3::ZERO);
    SetShaderParameter("MatEnvMapColor", Vector3::ONE);
    SetShaderParameter("MatSpecColor", Vector4(0.0f, 0.0f, 0.0f, 1.0f));
    batchedParameterUpdate_ = false;

    cullMode_ = CULL_CCW;
    shadowCullMode_ = CULL_CCW;
    fillMode_ = FILL_SOLID;
    depthBias_ = BiasParameters(0.0f, 0.0f);

    RefreshShaderParameterHash();
    RefreshMemoryUse();
}
Ejemplo n.º 2
0
// ******************************************************************
// Erstellen aus einem String
age_Result ageD_D3DEffect::Init(char* pcCode,
						int iSize)
{
	HRESULT hResult;

	// Parameter prüfen und sicherstellen, dass Direct3D initialisiert wurde
	if(pcCode == NULL)					AGE_ERROR_NULL_POINTER("pcCode", AGE_ERROR);
	if(iSize == 0 || iSize < -1)		AGE_ERROR_INVALID_VALUE("iSize", AGE_ERROR);
	if(!ageG_Direct3D::IsInitialized())	AGE_ERROR("Direct3D wurde noch nicht initialisiert!", AGE_ERROR);


	// Länge anpassen
	if(iSize == -1) iSize = strlen(pcCode);

	// Jetzt den Effekt erstellen
	if(FAILED(hResult = D3DXCreateEffect(ageG_Direct3D::GetDevice(),
										 pcCode, iSize, NULL, NULL, 0,
										 age_g_pEffectPool, &m_pEffect, NULL)))
	{
		// Fehler!
		AGE_ERROR_DIRECTX("D3DXCreateEffect", hResult, AGE_ERROR);
	}

	// Effektbeschreibung abfragen
	m_pEffect->GetDesc(&m_Desc);

	// Die erste gültige Technik setzen
	SetTechnique(-1);

	return AGE_OK;
}