|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 16.11.2008, 16:50 Titel: std::vector::c_array? |
|
|
Ok, ich habe sagen wir folgendes:
CPP: | vector<Vector3f> m_VertexPositions;
glVertexPointer(3, GL_FLOAT, 0, &(m_VertexPositions[0]));
|
Wenn ich direkt den Pointer auf den Vector nehme geht es nicht, ist ja irgendwo auch klar.
Die Frage ist, kann ich das da oben eleganter schreiben? Ich muss eben an Ogl ein C Array übergeben, und scheinbar hat die Vectorklasse dafür nix vorgefertigtes.
Ist das was ich vorhabe überhaupt theoretisch Möglich? Ich meine, garantiert dei STL, dass ich ein Vector als C-Array benutzen kann? Oder ist er nur "zufällig" intern so implementiert?
Wenn nein, gäbe es dann eine bessere Wrapperklasse für ein C-Array? Die mir halt Speicherverwaltung und so abnimmt? Klar, ich könnte was eigenes schrieben, aber darauf hab ich sooo wenig Lust
[edit]
mkay, scheinbar ist es garantiert:
http://www.cplusplus.com/reference/stl/vector/ hat Folgendes geschrieben: |
Vector containers are implemented as dynamic arrays; Just as regular arrays, vector containers have their elements stored in contiguous storage locations, which means that their elements can be accessed not only using iterators but also using offsets on regular pointers to elements.
|
Dann ist jetzt nur noch die Frage, wie ich das schöner schrieben kann.
[/edit] _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 16.11.2008, 21:07 Titel: |
|
|
mmmhh warum keine direkten Zeiger auf einen Vector ?^^
Code: |
vector<float/::std::basic_string<wchar_t>/(was du willst)> m_VertexPositions;
glVertexPointer(3, GL_FLOAT, 0, &m_VertexPositions);
|
Code: |
glVertexPointer(..,...,..., ::std::vector<....> p_mVertexPositions)
{
(*p_mVertexPositions)[0]
}
|
mmmhhhhh klappt bei mir so eigtl. _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 16.11.2008, 22:39 Titel: |
|
|
Würde klappen, wenn glVertexPointer keine von OpenGL bereitgestellte C Funktion wäre _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
fast hawk Senior JLI'ler
Anmeldedatum: 15.07.2005 Beiträge: 237 Wohnort: Freiburg Medaillen: Keine
|
Verfasst am: 17.11.2008, 15:12 Titel: |
|
|
ooohhh ^^ ich kenn mich mit opengl net aus also muss ich passen tut mir leid ^^ _________________ Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann |
|
Nach oben |
|
|
DirectXer Dark JLI'ler
Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 17.11.2008, 17:55 Titel: |
|
|
da ein vektor random-access-iteratoren implementiert ist es schon sichergestellt dass die elemente in form eines arrays vorliegen (s. auch dein zitat oben). du kannst dich also ruhig mit deiner ersten Lösung zufriedengeben. nach aussehen kannst du natürlich auch folgendes machen, ist konzeptuell etwas eleganter, aber nicht zwingend notwendig: CPP: | &vec.front(); //einfachste methode (und gut lesbar)
&*vec.begin(); // designierte methode, so wirds innnerhalb der stl oft gemacht
&vec[0] // "c-style" methode, wird so auch oft bei std::string genutzt |
Gruß DXer |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|