<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Buffer objects</title><link>https://sourceforge.net/p/glslayer/wiki/Buffer%2520objects/</link><description>Recent changes to Buffer objects</description><atom:link href="https://sourceforge.net/p/glslayer/wiki/Buffer%20objects/feed" rel="self"/><language>en</language><lastBuildDate>Mon, 10 Jun 2013 17:24:11 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/glslayer/wiki/Buffer%20objects/feed" rel="self" type="application/rss+xml"/><item><title>Buffer objects modified by Milan Davidovic</title><link>https://sourceforge.net/p/glslayer/wiki/Buffer%2520objects/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;All buffer objects are represented with gls::IBuffer class. Here is the list of supported buffer types:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;VERTEX_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;INDEX_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;PIXEL_PACK_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;PIXEL_UNPACK_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;TEXTURE_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;UNIFORM_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;TRANSFORM_FEEDBACK_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;DRAW_INDIRECT_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;DISPATCH_INDIRECT_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;ATOMIC_COUNTER_BUFFER&lt;/span&gt;
&lt;span class="n"&gt;SHADER_STORAGE_BUFFER&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For example, a vertex buffer can be created like this:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;vertexBuffer&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;renderContext&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;CreateBuffer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;gls&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;VERTEX_BUFFER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sizeInBytes&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;nullptr&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;gls&lt;/span&gt;&lt;span class="p"&gt;::&lt;/span&gt;&lt;span class="n"&gt;USAGE_DYNAMIC_DRAW&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;By passing null as data pointer, it will create an uninitialized vertex buffer of specified size. You can specify data later in various ways:&lt;br /&gt;
    - By calling BufferData() (also respecifies buffer size and usage). This call will create a new buffer.&lt;br /&gt;
    - By calling BufferSubData(). This is more efficient than the previous, it replaces a part or all the data in the existing buffer.&lt;br /&gt;
    - Finally, data can be changed by calling Map() or MapRange(). These functions will map the buffer storage to process's address space and return a pointer through which data can be modified. After that, Unmap() must be called before buffer object is used.&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Milan Davidovic</dc:creator><pubDate>Mon, 10 Jun 2013 17:24:11 -0000</pubDate><guid>https://sourceforge.net28625333e2873ffa3eadaa221353d8d8c308827d</guid></item></channel></rss>