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(); }
// ****************************************************************** // 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; }