Procházet zdrojové kódy

gl_rasterizer: Implement constant vertex attributes

Credits go to gdkchan from Ryujinx for finding constant attributes are
used in retail games.
ReinUsesLisp před 6 roky
rodič
revize
6dfcabc800

+ 4 - 0
src/video_core/engines/maxwell_3d.h

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

+ 2 - 2
src/video_core/renderer_opengl/gl_rasterizer.cpp

@@ -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;
         }