diff --git a/pixelgl/vertex.go b/pixelgl/vertex.go
index 92092ef06ac7317fd15dd237d016f938d9118b89..a0ed2f434956698074a1ab1dfdc3d91962048cef 100644
--- a/pixelgl/vertex.go
+++ b/pixelgl/vertex.go
@@ -215,14 +215,13 @@ func (va *VertexArray) SetVertexAttribute(vertex int, attr VertexAttribute, data
 	if vertex < 0 || vertex >= va.count {
 		panic("set vertex attribute error: invalid vertex index")
 	}
+	if _, ok := va.attrs[attr]; !ok {
+		panic("set vertex attribute error: invalid vertex attribute")
+	}
 	DoNoBlock(func() {
 		gl.BindBuffer(gl.ARRAY_BUFFER, va.vbo)
 
-		attrOffset, ok := va.attrs[attr]
-		if !ok {
-			panic("set vertex attribute error: invalid vertex attribute")
-		}
-		offset := 8*va.stride*vertex + 8*attrOffset
+		offset := 8*va.stride*vertex + 8*va.attrs[attr]
 		gl.BufferSubData(gl.ARRAY_BUFFER, offset, 8*len(data), gl.Ptr(data))
 
 		gl.BindBuffer(gl.ARRAY_BUFFER, 0)