Forgot the buffer write for unset parameters
This commit is contained in:
parent
cfe19d5c4a
commit
cde32060ec
@ -181,12 +181,28 @@ namespace ANX.RenderSystem.Windows.Metro.Shader
|
|||||||
MemoryStream stream = new MemoryStream();
|
MemoryStream stream = new MemoryStream();
|
||||||
BinaryWriter writer = new BinaryWriter(stream);
|
BinaryWriter writer = new BinaryWriter(stream);
|
||||||
|
|
||||||
foreach (byte[] data in setData)
|
for(int index = 0; index < setData.Length; index++)
|
||||||
{
|
{
|
||||||
if (data != null)
|
byte[] data = (byte[])setData[index];
|
||||||
{
|
if (data != null)
|
||||||
writer.Write(data);
|
{
|
||||||
}
|
writer.Write(data);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var parameter = parentEffect.shader.Parameters[index];
|
||||||
|
if (parameter.Type.ToLower().Contains("texture"))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
int size = GetParameterTypeSize(parameter.Type);
|
||||||
|
foreach (int dimension in parameter.TypeDimensions)
|
||||||
|
{
|
||||||
|
size *= dimension;
|
||||||
|
}
|
||||||
|
|
||||||
|
size *= parameter.ArraySize;
|
||||||
|
writer.Write(new byte[size]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
byte[] streamBytes = stream.ToArray();
|
byte[] streamBytes = stream.ToArray();
|
||||||
@ -208,6 +224,23 @@ namespace ANX.RenderSystem.Windows.Metro.Shader
|
|||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private int GetParameterTypeSize(string type)
|
||||||
|
{
|
||||||
|
if (type == "float" ||
|
||||||
|
type == "int" ||
|
||||||
|
type == "uint" ||
|
||||||
|
type == "dword")
|
||||||
|
return 4;
|
||||||
|
if (type == "double")
|
||||||
|
return 8;
|
||||||
|
if (type == "bool")
|
||||||
|
return 1;
|
||||||
|
if (type == "half")
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
throw new NotImplementedException("Parameter type " + type + " has no size value!");
|
||||||
|
}
|
||||||
|
|
||||||
#region Dispose
|
#region Dispose
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user