Renderer/ShaderSerialize: Use ByteStream instead of ByteArray
This commit is contained in:
parent
bc490a2fe5
commit
691de5b5c4
|
|
@ -67,7 +67,7 @@ namespace Nz
|
|||
class NAZARA_RENDERER_API ShaderSerializer final : public ShaderSerializerBase
|
||||
{
|
||||
public:
|
||||
inline ShaderSerializer(ByteArray& byteArray);
|
||||
inline ShaderSerializer(ByteStream& stream);
|
||||
~ShaderSerializer() = default;
|
||||
|
||||
void Serialize(const ShaderAst& shader);
|
||||
|
|
@ -85,14 +85,13 @@ namespace Nz
|
|||
void Value(UInt32& val) override;
|
||||
void Variable(ShaderNodes::VariablePtr& var) override;
|
||||
|
||||
ByteArray& m_byteArray;
|
||||
ByteStream m_stream;
|
||||
ByteStream& m_stream;
|
||||
};
|
||||
|
||||
class NAZARA_RENDERER_API ShaderUnserializer final : public ShaderSerializerBase
|
||||
{
|
||||
public:
|
||||
ShaderUnserializer(const ByteArray& byteArray);
|
||||
ShaderUnserializer(ByteStream& stream);
|
||||
~ShaderUnserializer() = default;
|
||||
|
||||
ShaderAst Unserialize();
|
||||
|
|
@ -109,12 +108,11 @@ namespace Nz
|
|||
void Value(UInt32& val) override;
|
||||
void Variable(ShaderNodes::VariablePtr& var) override;
|
||||
|
||||
const ByteArray& m_byteArray;
|
||||
ByteStream m_stream;
|
||||
ByteStream& m_stream;
|
||||
};
|
||||
|
||||
NAZARA_RENDERER_API ByteArray SerializeShader(const ShaderAst& shader);
|
||||
NAZARA_RENDERER_API ShaderAst UnserializeShader(const ByteArray& data);
|
||||
NAZARA_RENDERER_API ShaderAst UnserializeShader(ByteStream& stream);
|
||||
}
|
||||
|
||||
#include <Nazara/Renderer/ShaderSerializer.inl>
|
||||
|
|
|
|||
|
|
@ -95,15 +95,13 @@ namespace Nz
|
|||
val = static_cast<std::size_t>(value);
|
||||
}
|
||||
|
||||
inline ShaderSerializer::ShaderSerializer(ByteArray& byteArray) :
|
||||
m_byteArray(byteArray),
|
||||
m_stream(&m_byteArray, OpenModeFlags(OpenMode_WriteOnly))
|
||||
inline ShaderSerializer::ShaderSerializer(ByteStream& stream) :
|
||||
m_stream(stream)
|
||||
{
|
||||
}
|
||||
|
||||
inline ShaderUnserializer::ShaderUnserializer(const ByteArray& byteArray) :
|
||||
m_byteArray(byteArray),
|
||||
m_stream(const_cast<ByteArray*>(&m_byteArray), OpenModeFlags(OpenMode_ReadOnly))
|
||||
inline ShaderUnserializer::ShaderUnserializer(ByteStream& stream) :
|
||||
m_stream(stream)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -248,9 +248,6 @@ namespace Nz
|
|||
|
||||
void ShaderSerializer::Serialize(const ShaderAst& shader)
|
||||
{
|
||||
UInt32 magicNumber = s_magicNumber;
|
||||
UInt32 version = s_currentVersion;
|
||||
|
||||
m_stream << s_magicNumber << s_currentVersion;
|
||||
|
||||
auto SerializeInputOutput = [&](auto& inout)
|
||||
|
|
@ -558,15 +555,17 @@ namespace Nz
|
|||
ByteArray SerializeShader(const ShaderAst& shader)
|
||||
{
|
||||
ByteArray byteArray;
|
||||
ShaderSerializer serializer(byteArray);
|
||||
ByteStream stream(&byteArray, OpenModeFlags(OpenMode_WriteOnly));
|
||||
|
||||
ShaderSerializer serializer(stream);
|
||||
serializer.Serialize(shader);
|
||||
|
||||
return byteArray;
|
||||
}
|
||||
|
||||
ShaderAst UnserializeShader(const ByteArray& data)
|
||||
ShaderAst UnserializeShader(ByteStream& stream)
|
||||
{
|
||||
ShaderUnserializer unserializer(data);
|
||||
ShaderUnserializer unserializer(stream);
|
||||
return unserializer.Unserialize();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue