<?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[Video puffer auslesen]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich denke einige von euch kennen die Funktion 'SwapBuffer()' welche für Grafikanwendugnen sehr wichtig ist. Allerdings frage ich mich ob man mittels Win32API auch so schnell wie möglich den aktuellen VideoBuffer (Video Puffer) auslesen kann. Die Funktionen von OpenGL um Screenshots zu machen sind mit nämlich noch etwas zu langsam.<br />
Kennt jemand von euch eine solche Funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/207280/video-puffer-auslesen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 20:51:05 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/207280.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Mar 2008 16:22:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Video puffer auslesen on Wed, 05 Mar 2008 16:22:36 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich denke einige von euch kennen die Funktion 'SwapBuffer()' welche für Grafikanwendugnen sehr wichtig ist. Allerdings frage ich mich ob man mittels Win32API auch so schnell wie möglich den aktuellen VideoBuffer (Video Puffer) auslesen kann. Die Funktionen von OpenGL um Screenshots zu machen sind mit nämlich noch etwas zu langsam.<br />
Kennt jemand von euch eine solche Funktion?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468888</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Wed, 05 Mar 2008 16:22:36 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Wed, 05 Mar 2008 17:01:14 GMT]]></title><description><![CDATA[<p>theoretisch du kannst doch nen CompatibleDC (so dass auf dem DC des Fensters weiter gezeichnet werden kann) erstellen und die entsprechenden Daten vom RenderingContext darein kopieren, und letztendlich abspeichern. praktische umsetzung - kA, kenn mich mit OGL nich wirklich aus.</p>
<p>das obige wird wohl ziemlich langsam sein, deshalb wird ich dir raten, ob jetzt mit den OpenGL funktionen oder der winapi: erstell doch einen thread, in dem das obige Vorgehen passiert. Dann solltest du doch von einem Geschwindigkeitsverlust fast nichts merken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468926</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468926</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Wed, 05 Mar 2008 17:01:14 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Wed, 05 Mar 2008 17:06:05 GMT]]></title><description><![CDATA[<p>Ich möchte nicht unbedingt einen Thread wegen so einer Saceh aufmachen. Selbst 'PureBasic' kriegt das sau schnell hin dann wird das jawohl in C++ genau so gut auch ohne Thread gehen.<br />
Aber das mit dem auslesen aus dem RenderingContext ist vielleicht gar keine so dumme Idee.<br />
Ich guck dazu mal in Google. Danke schon mal.<br />
PS: Weitere Ideen freuen mich natürlich acuh <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1468930</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1468930</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Wed, 05 Mar 2008 17:06:05 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Wed, 05 Mar 2008 22:28:28 GMT]]></title><description><![CDATA[<p>Hi !<br />
Die Funktion BitBlt, die könnte etwas für dich sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469107</guid><dc:creator><![CDATA[proggingmania]]></dc:creator><pubDate>Wed, 05 Mar 2008 22:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Thu, 06 Mar 2008 13:06:12 GMT]]></title><description><![CDATA[<p>Das währ vielleicht ne gute Idee. Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469365</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469365</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Thu, 06 Mar 2008 13:06:12 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Thu, 06 Mar 2008 14:19:27 GMT]]></title><description><![CDATA[<p>LukasBanana schrieb:</p>
<blockquote>
<p>Die Funktionen von OpenGL um Screenshots zu machen sind mit nämlich noch etwas zu langsam.</p>
</blockquote>
<p>Meinst du glReadPixels()? Was ist dir daran zu langsam? Was für eine Anforderung hast du denn, 20 Screenshots pro Sekunde???</p>
<p>Ich glaube nicht, dass es mit WinAPI-Mitteln besser geht. Die Daten der OGL-Anwendung liegen ja immerhin auf dem Grafikspeicher. Da kommst du nicht mehr so einfach dran.</p>
<p>Ein Weg, den Xantus glaube ich meinte, wäre:<br />
Kurzzeitig den RC an einen anderen DC zu binden, d.h. du wählst einen DC von einem DIB an, holst dir einen RC dazu und zeichnest einfach deine OGL-Szene. Danach wieder mit wglMakeCurrent() den alten RC an den DC deines normalen Fensters binden, um wieder normal weiterzumachen.</p>
<p>Den Ansatz hat <a href="http://www.codeguru.com/cpp/g-m/opengl/printing/article.php/c5585/" rel="nofollow">hier</a> jemand verwendet, um ein OpenGL-Bild zu drucken. Der Ansatz sollte dir helfen.</p>
<p>Aber ob das schneller ist, als per glReadPixels(), weiß ich nicht. Probiers aus.</p>
<p>gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469423</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469423</guid><dc:creator><![CDATA[mad_martin]]></dc:creator><pubDate>Thu, 06 Mar 2008 14:19:27 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Thu, 06 Mar 2008 14:27:35 GMT]]></title><description><![CDATA[<p>BitBlt macht es in ms... aber DirectX-Grafik kann es nicht kopieren, sondern nur &quot;normale&quot; Bilder...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469428</guid><dc:creator><![CDATA[Jochen Kalmbach]]></dc:creator><pubDate>Thu, 06 Mar 2008 14:27:35 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Thu, 06 Mar 2008 16:17:12 GMT]]></title><description><![CDATA[<p>Also bei mir ist glReadPixels noch um einiges langsamer als glCopyTexSubImage2D. Und diese Funktion wiederum ist langsamer als eien Funktion aus PureBasic und in C++ sollte das mindestens genau so schnell gehen.<br />
Aber das mit dem wechseln von DC zu RC und dann auch noch mal die gesammte Szene rendern, neh, das kann auch nicht die Lösung sein</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469517</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Thu, 06 Mar 2008 16:17:12 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Thu, 06 Mar 2008 17:38:07 GMT]]></title><description><![CDATA[<p>Beantworte mir doch bitte mal die Frage, wie langsam das bei dir ist. Und wie deine Anforderung sein soll.</p>
<p>Welche Funktion benutzest du denn in PureBasic? Gibts da ne Doku zu, die deren Wirkungsweise erläutert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469565</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469565</guid><dc:creator><![CDATA[mad_martin]]></dc:creator><pubDate>Thu, 06 Mar 2008 17:38:07 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Thu, 06 Mar 2008 19:34:12 GMT]]></title><description><![CDATA[<p>LukasBanana schrieb:</p>
<blockquote>
<p>Aber das mit dem wechseln von DC zu RC und dann auch noch mal die gesammte Szene rendern, neh, das kann auch nicht die Lösung sein</p>
</blockquote>
<p>du scheinst die obigen Tipps nicht verstanden zu haben. Hier nochmal ein Überblick über die Methode mit BitBlt, allerdings in anderer Reihenfolge:<br />
Ich gehe mal davon aus, dass du die gedrückten Tasten VOR dem rendern überprüfst, nich wahr? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>- überprüfe ob die taste für den screenshot gedrückt; wenn ja, setzte flag<br />
- berechnungen, rendern, gut is<br />
- swap buffers; JETZT hast du alles im DC<br />
- flag gesetzt? compatibleDC erstellen, compatibleBitmap erstellen, DC auslesen, in compatible dc kopieren, bitmap abspeichern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1469644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1469644</guid><dc:creator><![CDATA[Xantus]]></dc:creator><pubDate>Thu, 06 Mar 2008 19:34:12 GMT</pubDate></item><item><title><![CDATA[Reply to Video puffer auslesen on Fri, 07 Mar 2008 15:50:28 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/14945">@mad_martin</a>: glReadPixels dauert bei mir so ca. eine Sekunde. In PB gibt`s ne Funktion namens 'GrabSprite' da merkt man überhaupt keinen Geschwindigkeitsverlust.</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/18944">@Xantus</a>: Okay das kann ich mal ausprobieren</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1470123</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1470123</guid><dc:creator><![CDATA[LukasBanana]]></dc:creator><pubDate>Fri, 07 Mar 2008 15:50:28 GMT</pubDate></item></channel></rss>