Browse Source

add and employ ShaderParameter constructor for D3D9 case

Ricardo Abreu 7 years ago
parent
commit
1942bd5562

+ 2 - 12
Source/Urho3D/Graphics/Direct3D9/D3D9ShaderVariation.cpp

@@ -199,12 +199,7 @@ bool ShaderVariation::LoadByteCode(const String& binaryShaderName)
         unsigned reg = file->ReadUByte();
         unsigned regCount = file->ReadUByte();
 
-        ShaderParameter parameter;
-        parameter.type_ = type_;
-        parameter.name_ = name;
-        parameter.register_ = reg;
-        parameter.regCount_ = regCount;
-        parameters_[StringHash(name)] = parameter;
+        parameters_[StringHash(name)] = ShaderParameter{type_, name, reg, regCount};
     }
 
     unsigned numTextureUnits = file->ReadUInt();
@@ -355,12 +350,7 @@ void ShaderVariation::ParseParameters(unsigned char* bufData, unsigned bufSize)
         }
         else
         {
-            ShaderParameter parameter;
-            parameter.type_ = type_;
-            parameter.name_ = name;
-            parameter.register_ = reg;
-            parameter.regCount_ = regCount;
-            parameters_[StringHash(name)] = parameter;
+            parameters_[StringHash(name)] = ShaderParameter{type_, name, reg, regCount};
         }
     }
 

+ 8 - 0
Source/Urho3D/Graphics/ShaderVariation.cpp

@@ -47,6 +47,14 @@ ShaderParameter::ShaderParameter(ShaderType type, const String& name, unsigned o
 {
 }
 
+ShaderParameter::ShaderParameter(ShaderType type, const String& name, unsigned reg, unsigned regCount) :
+    type_{type},
+    name_{name},
+    register_{reg},
+    regCount_{regCount}
+{
+}
+
 ShaderVariation::ShaderVariation(Shader* owner, ShaderType type) :
     GPUObject(owner->GetSubsystem<Graphics>()),
     owner_(owner),

+ 2 - 0
Source/Urho3D/Graphics/ShaderVariation.h

@@ -43,6 +43,8 @@ struct ShaderParameter
     ShaderParameter(const String& name, unsigned glType, int location);
     /// Construct with type, name, offset, size, and buffer, leaving the remaining attributes zero-initialized (used only in Direct3D11).
     ShaderParameter(ShaderType type, const String& name, unsigned offset, unsigned size, unsigned buffer);
+    /// Construct with type, name, register, and register count, leaving the remaining attributes zero-initialized (used only in Direct3D9).
+    ShaderParameter(ShaderType type, const String& name, unsigned reg, unsigned regCount);
 
     /// %Shader type.
     ShaderType type_{};