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:
		| @@ -303,6 +303,10 @@ public: | |||||||
|                 return (type == Type::SignedNorm) || (type == Type::UnsignedNorm); |                 return (type == Type::SignedNorm) || (type == Type::UnsignedNorm); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|  |             bool IsConstant() const { | ||||||
|  |                 return constant; | ||||||
|  |             } | ||||||
|  |  | ||||||
|             bool IsValid() const { |             bool IsValid() const { | ||||||
|                 return size != Size::Invalid; |                 return size != Size::Invalid; | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -140,8 +140,8 @@ void RasterizerOpenGL::SetupVertexFormat() { | |||||||
|         const auto attrib = gpu.regs.vertex_attrib_format[index]; |         const auto attrib = gpu.regs.vertex_attrib_format[index]; | ||||||
|         const auto gl_index = static_cast<GLuint>(index); |         const auto gl_index = static_cast<GLuint>(index); | ||||||
|  |  | ||||||
|         // Ignore invalid attributes. |         // Disable constant attributes. | ||||||
|         if (!attrib.IsValid()) { |         if (attrib.IsConstant()) { | ||||||
|             glDisableVertexAttribArray(gl_index); |             glDisableVertexAttribArray(gl_index); | ||||||
|             continue; |             continue; | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user