ja!
Um dein Objekt dann zu rendern musst du nur noch die Matrizen updaten und der Grafikkarte mitteilen mit welchem Shader in welchen Speicher geschrieben werden und welche Daten dazu genutzt werden sollen. Die Vertex und Indexbuffer sind dabei sehr spezielle Daten, da zum Beispiel dein Vertexshader für jeden Vertex aus deinem Vertexbuffer ausgeführt wird und die Indizes werden beim Rasterisieren (herausfinden welche Pixel teil deines Objektes darstellen und welche nicht) benutzt.
Die einzelnen Vertexdaten und Matrizen und sonstiges werden an Shadervariablen gebunden, so dass man komfortabel damit arbeiten kann.
Nach dem Vertexshader und der Rasterisierung und noch etwas mehr Grafikpipelinemagic kommt der Pixelshader der interpolierte Eingangsdaten vom Vertexshader und auch wieder eigene Daten bekommt und damit festlegt welche Farbe jeder Pixel haben soll. Das wird dann über ein paar Umwege meistens in einen Texturbuffer geschrieben und beim Bufferswappen wird dieser Buffer statt dem vorher gezeigtem angezeigt.
Das ist so jedenfalls der minimalste Ablauf.
Inzwischen gibt es da doch einige Erweiterungen wie Geometrie und Tesselation Shader, die sich dann noch dazwischen klinken. Dann gibt es teilweise auch noch Möglichkeiten Pixel darauf warten zu lassen bis andere gerendert wurden, Vertexbuffer mit neuen Vertexdaten befüllen, ...
Was vor allem gut zu verstehen ist, ist dass Vertexdaten nicht unbedingt Vertexdaten sein müssen und vor allem Texturdaten nicht immer nur Bilder sind. Man kann auch die Matrizen statt als Uniforms als Texturbuffer zur Verfügung stellen und trotzdem als Matrix nutzen, ob das sinnvoll ist oder nicht ist dann wieder was anderes, manchmal ist es das vielleicht, aber dann gibt es auch noch wieder andere Möglichkeiten...