Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
var vbo = new VertexBufferObject(texture); vbo.AddArray(new ArrayBuffer<float>(2, ArrayCap.TextureCoordArray, new float[] {...})); vbo.AddArray(new ArrayBuffer<float>(3, ArrayCap.NormalArray, new float[] {...})); vbo.AddArray(new ArrayBuffer<float>(3, ArrayCap.VertexArray, new float[] {...})); vbo.AddArray(new IndexBuffer<uint>(indicesData)); vbo.UploadData(); // Beim rendern: vbo.Draw(); |
C#-Quelltext |
|
1 2 3 4 5 6 |
GL.GenBuffers(1, out id); GL.BindBuffer(this.bufferTarget, id); GL.BufferData(this.bufferTarget, (IntPtr)(this.data.Length * this.sizeInBytes), this.data, bufferUsage); GL.GetBufferParameter(this.bufferTarget, BufferParameterName.BufferSize, out bufferSize); |
C#-Quelltext |
|
1 2 3 4 5 6 7 8 |
if(this.arrayType == ArrayCap.TextureCoordArray) { GL.TexCoordPointer(this.itemSize, (TexCoordPointerType)this.pointerType, this.ItemSizeInBytes, IntPtr.Zero); } else if(this.arrayType == ArrayCap.VertexArray) { GL.VertexPointer(this.itemSize, (VertexPointerType)this.pointerType, this.ItemSizeInBytes, IntPtr.Zero); } |
C#-Quelltext |
|
1 2 3 |
GL.BindBuffer(BufferTarget.ElementArrayBuffer, this.id); GL.DrawElements(mode, this.Length, (DrawElementsType)this.pointerType, IntPtr.Zero); |
So jetzt den eigentlichen Fragen Hab ich das überhaupt alles richtig verstanden? Was wäre die richtige Lösung wenn man keine deprecated Funktionen benutzen möchte?
Wie ich gelesen habe sind die GL.VertexPointer etc mittlerweile deprecated. Wie genau passen VOAs und VBOs zusammen?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (24.04.2011, 22:20)
Woher weiß OpenGL welche Daten wofür sind bei dem generischen glVertexAttribPointer. Es fehlt ja die Info ob es TexturCoords sind oder was anderes.
Und wie speichere ich dann die Daten? Wieder alle in einzelnen Arrays oder alle zusammengepackt in einem Struct und dieses dann als Array.
Wie genau sieht dann der Draw Call aus? Ist glDrawArrays die richtige Funktion dafür?
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »dot« (24.04.2011, 23:24)
Das Problem ist, das ich es mit den GL Funktionen nicht hin bekommen habe.
Werbeanzeige