gl_rasterizer: Implement constant vertex attributes

Credits go to gdkchan from Ryujinx for finding constant attributes are
used in retail games.
This commit is contained in:
ReinUsesLisp 2020-04-14 17:58:53 -03:00
parent 7e4a132a77
commit 6dfcabc800
2 changed files with 6 additions and 2 deletions

View file

@ -303,6 +303,10 @@ public:
return (type == Type::SignedNorm) || (type == Type::UnsignedNorm);
}
bool IsConstant() const {
return constant;
}
bool IsValid() const {
return size != Size::Invalid;
}

View file

@ -140,8 +140,8 @@ void RasterizerOpenGL::SetupVertexFormat() {
const auto attrib = gpu.regs.vertex_attrib_format[index];
const auto gl_index = static_cast<GLuint>(index);
// Ignore invalid attributes.
if (!attrib.IsValid()) {
// Disable constant attributes.
if (attrib.IsConstant()) {
glDisableVertexAttribArray(gl_index);
continue;
}