JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=3af67b4bacdb34b7bdb447f22dfc232eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

std::vector::c_array?

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 16.11.2008, 16:50    Titel: std::vector::c_array? Antworten mit Zitat

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 Very Happy

[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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 16.11.2008, 21:07    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 16.11.2008, 22:39    Titel: Antworten mit Zitat

Würde klappen, wenn glVertexPointer keine von OpenGL bereitgestellte C Funktion wäre Very Happy
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 17.11.2008, 15:12    Titel: Antworten mit Zitat

ooohhh ^^ ich kenn mich mit opengl net aus also muss ich passen Wink tut mir leid Sad^^ Very Happy
_________________
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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
DirectXer
Dark JLI'ler



Anmeldedatum: 05.02.2005
Beiträge: 1201
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 17.11.2008, 17:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum