Different result with DSA (vertexArrayVertexBuffer, vertexArrayAttribBinding) than with glBufferData
You forgot to call glVertexArrayAttribFormat:

glCreateBuffers(1, &amp;buffer);
glNamedBufferStorage(buffer, sizeof(vertices), vertices, 0);

glCreateVertexArrays(1, &amp;vao);
glEnableVertexArrayAttrib(vao, 0);
glVertexArrayAttribFormat(vao, 0, 3, GL_FLOAT, GL_FALSE, 0);

glVertexArrayVertexBuffer(vao, 0, buffer, 0, sizeof(GLfloat) * 3);
glVertexArrayAttribBinding(vao, 0, 0);