本文整理汇总了C++中SerialiserType::IsReading方法的典型用法代码示例。如果您正苦于以下问题:C++ SerialiserType::IsReading方法的具体用法?C++ SerialiserType::IsReading怎么用?C++ SerialiserType::IsReading使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SerialiserType
的用法示例。
在下文中一共展示了SerialiserType::IsReading方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: DoSerialise
void DoSerialise(SerialiserType &ser, D3D12_GRAPHICS_PIPELINE_STATE_DESC &el)
{
SERIALISE_MEMBER(pRootSignature);
SERIALISE_MEMBER(VS);
SERIALISE_MEMBER(PS);
SERIALISE_MEMBER(DS);
SERIALISE_MEMBER(HS);
SERIALISE_MEMBER(GS);
SERIALISE_MEMBER(StreamOutput);
SERIALISE_MEMBER(BlendState);
SERIALISE_MEMBER(SampleMask);
SERIALISE_MEMBER(RasterizerState);
SERIALISE_MEMBER(DepthStencilState);
SERIALISE_MEMBER(InputLayout);
SERIALISE_MEMBER(IBStripCutValue);
SERIALISE_MEMBER(PrimitiveTopologyType);
SERIALISE_MEMBER(NumRenderTargets);
SERIALISE_MEMBER(RTVFormats);
SERIALISE_MEMBER(DSVFormat);
SERIALISE_MEMBER(SampleDesc);
SERIALISE_MEMBER(NodeMask);
SERIALISE_MEMBER(Flags);
if(ser.IsReading())
{
el.CachedPSO.CachedBlobSizeInBytes = 0;
el.CachedPSO.pCachedBlob = NULL;
}
}
示例2: DoSerialiseViaResourceId
void DoSerialiseViaResourceId(SerialiserType &ser, Interface *&el)
{
D3D12ResourceManager *rm = (D3D12ResourceManager *)ser.GetUserData();
ResourceId id;
if(ser.IsWriting())
id = GetResID(el);
DoSerialise(ser, id);
if(ser.IsReading())
{
if(id != ResourceId() && rm && rm->HasLiveResource(id))
el = rm->GetLiveAs<Interface>(id);
else
el = NULL;
}
}
示例3: SerialiseProgramBindings
void SerialiseProgramBindings(SerialiserType &ser, CaptureState state, const GLHookSet &gl,
GLuint prog)
{
std::vector<ProgramBinding> InputBindings;
std::vector<ProgramBinding> OutputBindings;
if(ser.IsWriting())
{
char buf[128] = {};
for(int sigType = 0; sigType < 2; sigType++)
{
GLenum sigEnum = (sigType == 0 ? eGL_PROGRAM_INPUT : eGL_PROGRAM_OUTPUT);
std::vector<ProgramBinding> &bindings = (sigType == 0 ? InputBindings : OutputBindings);
int32_t NumAttributes = 0;
gl.glGetProgramInterfaceiv(prog, sigEnum, eGL_ACTIVE_RESOURCES, (GLint *)&NumAttributes);
bindings.reserve(NumAttributes);
for(GLint i = 0; i < NumAttributes; i++)
{
gl.glGetProgramResourceName(prog, sigEnum, i, 128, NULL, buf);
ProgramBinding bind;
bind.Name = buf;
if(sigType == 0)
bind.Binding = gl.glGetAttribLocation(prog, buf);
else
bind.Binding = gl.glGetFragDataLocation(prog, buf);
bindings.push_back(bind);
}
}
}
SERIALISE_ELEMENT(InputBindings);
SERIALISE_ELEMENT(OutputBindings);
if(ser.IsReading() && IsReplayMode(state))
{
for(int sigType = 0; sigType < 2; sigType++)
{
const std::vector<ProgramBinding> &bindings = (sigType == 0 ? InputBindings : OutputBindings);
uint64_t used = 0;
for(const ProgramBinding &bind : bindings)
{
if(bind.Binding >= 0)
{
uint64_t mask = 1ULL << bind.Binding;
if(used & mask)
{
RDCWARN("Multiple %s items bound to location %d, ignoring %s",
sigType == 0 ? "attrib" : "fragdata", bind.Binding, bind.Name.c_str());
continue;
}
used |= mask;
if(!strncmp("gl_", bind.Name.c_str(), 3))
continue; // GL_INVALID_OPERATION if name starts with reserved gl_ prefix (for both
// glBindAttribLocation and glBindFragDataLocation)
if(sigType == 0)
{
gl.glBindAttribLocation(prog, (GLuint)bind.Binding, bind.Name.c_str());
}
else
{
if(gl.glBindFragDataLocation)
{
gl.glBindFragDataLocation(prog, (GLuint)bind.Binding, bind.Name.c_str());
}
else
{
// glBindFragDataLocation is not core GLES, but it is in GL_EXT_blend_func_extended
// TODO what to do if that extension is not supported
RDCERR("glBindFragDataLocation is not supported!");
}
}
}
}
}
}
}