Du bist nicht angemeldet.

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

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

30.01.2012, 20:43

Das was irgendwie möglich ist?

Auf die Frage kann man weder mit Ja noch mit Nein antworten wenn man nicht weiß was genau du eigentlich wissen willst.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

12

30.01.2012, 20:43

Beruhig dich... niemand hat dich als "Dummkopf" hingestellt 8|

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

13

30.01.2012, 20:48

Trotzdem kann ich auf solche Kommentare verzichten.

Zitat

Das was irgendwie möglich ist?


Den Index an den Shader übergeben (als Attribut) und damit dann den Vertex aus dem Grafikspeicher lesen, anstatt den Vertex auslesen zu lassen.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

30.01.2012, 20:52

Na warum nicht gleich so? In D3D11 wäre das evtl. machbar. Die Frage ist: Warum sollte man das machen?

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

30.01.2012, 20:58

Zitat

Warum sollte man das machen?


Naja das gehört ja auch zur Frage: macht es Sinn? ^^
Also eher weniger. Ich hätte mir nur vorstellen können das dies Speicher spart da man die Vertices "wiederverwenden" kann...
Weil ich baue im Moment nicht zusammenhängende Meshes, also wenn ich z.B. die Indices aus einer Datei auslese mache ich dann mit den Vertices Dreiecke daraus und schmeiße die Indices weg, so wie im Beispiel weiter oben.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

30.01.2012, 21:01

Naja das gehört ja auch zur Frage: macht es Sinn? ^^

Mir fällt grad nichts ein wo es Sinn machen würde.

Ich hätte mir nur vorstellen können das dies Speicher spart da man die Vertices "wiederverwenden" kann...

Das genau ist doch der Sinn eines IndexBuffers!?

Weil ich baue im Moment nicht zusammenhängende Meshes, also wenn ich z.B. die Indices aus einer Datei auslese mache ich dann mit den Vertices Dreiecke daraus und schmeiße die Indices weg, so wie im Beispiel weiter oben.

Wenn du die Indices wegschmeißt und ohne Indices renderst, dann verlierst du natürlich die Vorteile von Rendern mit Indices... :rolleyes:

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

17

30.01.2012, 21:01

Nur weil es keinen Sinn macht die Indices an den Shader zu übergeben heißt das nicht automatisch, dass Indices keinen Sinn machen ;)
Tun sie nämlich.
Anstatt die Indices zu ignorieren und die vertices zu verdoppeln wäre es besser, wenn du die indices in einen indexbuffer packst und den mit dem vertexbuffer (der dann keine doppelten vertices enthält) zusammen renderst.

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

18

30.01.2012, 21:07

Ok, das klingt doch sehr nachdem was ich haben wollte ;)
Aber dann noch: wie setze ich das jetzt um, den Buffer binden, und dann? Wählt die Grafikkarte dann von alleine? Quasi:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);
                        
glBindBuffer(GL_ARRAY_BUFFER, m_vertexBuffer);
glVertexAttribPointer((GLint)0, 2, GL_FLOAT, GL_FALSE, 0, 0);               
glBindBuffer(GL_ARRAY_BUFFER, m_texCoordBuffer);
glVertexAttribPointer((GLint)1, 2, GL_FLOAT, GL_FALSE, 0, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, m_indexBuffer);
glVertexAttribPointer((GLint)2, 1, GL_UNSIGNED_INT, GL_FALSE, 0, 0);
    
glDrawArrays(GL_TRIANGLES, 0, m_vertices.size());
                                                        
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

19

30.01.2012, 21:08

Was du suchst nennt sich glDrawElements() und hat absolut nichts mit Shadern zu tun, sondern einfach nur damit wie man mit OpenGL indizierte Primitive zeichnet ;)

DeKugelschieber

Community-Fossil

  • »DeKugelschieber« ist der Autor dieses Themas

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

20

30.01.2012, 21:10

Ah jetzt wird mir einiges klar :D kommt davon wenn man immer mit dem selben (schlechten) System arbeitet...
Danke, ich meld mich wenn was schief läuft.

Werbeanzeige