Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:49:37

0001 #pragma once
0002 
0003 /**
0004 SGLFW_Buffer : minimal OpenGL buffer wrapper
0005 ---------------------------------------------
0006 
0007 Old Opticks oglrap handled multi-buffers using RBuf held by Renderer
0008 See::
0009 
0010    Renderer::createVertexArray
0011 
0012 **/
0013 
0014 struct SGLFW_Buffer
0015 {
0016     const char* name ; 
0017     int num_bytes ;
0018     const void* data ;
0019     GLenum target ;
0020     GLenum usage ;
0021     GLuint id ;
0022 
0023     SGLFW_Buffer( const char* name, int num_bytes, const void* data, GLenum target, GLenum usage  );
0024 
0025     void bind();
0026     void upload();
0027     void unbind();
0028 };
0029 
0030 inline SGLFW_Buffer::SGLFW_Buffer( const char* _name, int num_bytes_, const void* data_ , GLenum target_, GLenum usage_ )
0031     :
0032     name( _name ? strdup(_name) : nullptr ),
0033     num_bytes(num_bytes_),
0034     data(data_),
0035     target(target_),
0036     usage(usage_),
0037     id(0)
0038 {
0039     glGenBuffers(1, &id );                         SGLFW__check(__FILE__, __LINE__, name, id, "glGenBuffers/ctor");
0040 }
0041 
0042 inline void SGLFW_Buffer::bind()
0043 {
0044     glBindBuffer(target, id);                      SGLFW__check(__FILE__, __LINE__, name, id, "glBindBuffer/bind");
0045 }
0046 
0047 inline void SGLFW_Buffer::upload()
0048 {
0049     glBufferData(target, num_bytes, data, usage ); SGLFW__check(__FILE__, __LINE__, name, id, "glBufferData/uplo");
0050 }
0051 
0052 inline void SGLFW_Buffer::unbind()
0053 {
0054     glBindBuffer(target, 0);                      SGLFW__check(__FILE__, __LINE__, name, id, "glBindBuffer/unbi");
0055 }
0056 
0057