<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Datenanordnung in einem std::vector]]></title><description><![CDATA[<p>Hi.</p>
<p>Die Frage hat mehr mit der STL zu tun als mit OpenGL, daher denke ich, dass sie in diesem Forum gut aufgehoben ist.<br />
Wenn ich Daten in einem std::vector anordne, wie als bsp. Vertex-Koordinaten für OpenGL, wie werden diese geordnet, wenn ich wieder welche lösche? Also kann ich zwischen den Datenblöcken &quot;Lücken&quot; im RAM haben, die zu einer falschen Darstellung führen könnten? Sinn des ganzen ist es, Vertex-Strukturen einfach an ein std::vector zu übergeben und einen Zeiger zu den Daten an glDrawArrays. Ich habe das schon so versucht und es funktioniert, nur bin ich mir nicht so sicher, ob das ne schlaue Idee ist.<br />
Minimaler pseudo-code zur Veranschaulichung, nur eben reingetippert:</p>
<pre><code class="language-cpp">struct SimpleVertex
{
   SimpleVertex() 
      : x(0), y(0), z(0)
   {}

   GLfloat x,y,z;
}

int main()
{
  // ...
  std::vector vec;
  glVertexPointer(3, GL_FLOAT, &amp;vec[0]);
  // ...
}
</code></pre>
<p>Ich suche einfach eine Methode die Container der STL in Verbindung mit OpenGL zu nutzen, da diese doch recht gut optimiert sind statt eigene &quot;C-Style-Arrays&quot; zu entwerfen.<br />
Danke für eure Hilfe.<br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273595/datenanordnung-in-einem-std-vector</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 01:14:44 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273595.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 09 Sep 2010 15:58:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datenanordnung in einem std::vector on Thu, 09 Sep 2010 15:58:24 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Die Frage hat mehr mit der STL zu tun als mit OpenGL, daher denke ich, dass sie in diesem Forum gut aufgehoben ist.<br />
Wenn ich Daten in einem std::vector anordne, wie als bsp. Vertex-Koordinaten für OpenGL, wie werden diese geordnet, wenn ich wieder welche lösche? Also kann ich zwischen den Datenblöcken &quot;Lücken&quot; im RAM haben, die zu einer falschen Darstellung führen könnten? Sinn des ganzen ist es, Vertex-Strukturen einfach an ein std::vector zu übergeben und einen Zeiger zu den Daten an glDrawArrays. Ich habe das schon so versucht und es funktioniert, nur bin ich mir nicht so sicher, ob das ne schlaue Idee ist.<br />
Minimaler pseudo-code zur Veranschaulichung, nur eben reingetippert:</p>
<pre><code class="language-cpp">struct SimpleVertex
{
   SimpleVertex() 
      : x(0), y(0), z(0)
   {}

   GLfloat x,y,z;
}

int main()
{
  // ...
  std::vector vec;
  glVertexPointer(3, GL_FLOAT, &amp;vec[0]);
  // ...
}
</code></pre>
<p>Ich suche einfach eine Methode die Container der STL in Verbindung mit OpenGL zu nutzen, da diese doch recht gut optimiert sind statt eigene &quot;C-Style-Arrays&quot; zu entwerfen.<br />
Danke für eure Hilfe.<br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950372</guid><dc:creator><![CDATA[UnbekannterNr.42]]></dc:creator><pubDate>Thu, 09 Sep 2010 15:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to Datenanordnung in einem std::vector on Thu, 09 Sep 2010 16:03:48 GMT]]></title><description><![CDATA[<p>UnbekannterNr.42 schrieb:</p>
<blockquote>
<p>Ich suche einfach eine Methode die Container der STL in Verbindung mit OpenGL zu nutzen, da diese doch recht gut optimiert sind statt eigene &quot;C-Style-Arrays&quot; zu entwerfen.</p>
</blockquote>
<p>Sehr gut. Leider wählen viele Leute, gerade in Verbindung mit C-Frameworks, immer noch den harten Weg.</p>
<p>UnbekannterNr.42 schrieb:</p>
<blockquote>
<p>Wenn ich Daten in einem std::vector anordne, wie als bsp. Vertex-Koordinaten für OpenGL, wie werden diese geordnet, wenn ich wieder welche lösche? Also kann ich zwischen den Datenblöcken &quot;Lücken&quot; im RAM haben, die zu einer falschen Darstellung führen könnten?</p>
</blockquote>
<p>Nein. Wenn du in der Mitte Elemente rauslöschst, werden alle nachfolgenden Elemente nach vorne verschoben. Denk daran, dass dies unter Umständen teuer werden kann, wenn du oft am Anfang löschst. Ausserdem werden Indizes, Zeiger, Referenzen und Iteratoren auf Elemente ab dem gelöschten Element ungültig (oder zeigen auf was anderes).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950375</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950375</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 09 Sep 2010 16:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Datenanordnung in einem std::vector on Thu, 09 Sep 2010 16:08:22 GMT]]></title><description><![CDATA[<p>Danke für Deinen Beitrag und das Lob. Dann kann ich das ja weiterhin so machen.</p>
<p>Ich habe früher auch den harten Weg gewählt und die STL ignoriert. Das habe ich mit Stunden im Debugger und mehreren Rewrites bezahlt. Diesen Fehler will ich nicht mehr machen.<br />
STL rockt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /><br />
lg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1950382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1950382</guid><dc:creator><![CDATA[UnbekannterNr.42]]></dc:creator><pubDate>Thu, 09 Sep 2010 16:08:22 GMT</pubDate></item></channel></rss>