g4tools  5.4.0
Public Types | Public Member Functions | Public Attributes | List of all members
tools::sg::GL_manager::gsto_t Class Reference

Public Types

enum  kind { kind_texture, kind_buffer, kind_list, kind_memory }
 

Public Member Functions

 gsto_t (kind a_kind, int a_gl_id, size_t a_size, const float *a_data)
 
virtual ~gsto_t ()
 
bool is_valid () const
 
void bind () const
 

Public Attributes

unsigned int m_gl_id
 
kind m_kind
 
size_t m_size
 
float * m_data
 

Detailed Description

Definition at line 550 of file GL_manager.

Member Enumeration Documentation

◆ kind

Enumerator
kind_texture 
kind_buffer 
kind_list 
kind_memory 

Definition at line 553 of file GL_manager.

553  {
554  kind_texture,
555  kind_buffer,
556  kind_list,
558  };

Constructor & Destructor Documentation

◆ gsto_t()

tools::sg::GL_manager::gsto_t::gsto_t ( kind  a_kind,
int  a_gl_id,
size_t  a_size,
const float *  a_data 
)
inline

Definition at line 560 of file GL_manager.

561  :m_gl_id(a_gl_id)
562  ,m_kind(a_kind)
563  ,m_size(a_size)
564  ,m_data(0)
565  {
566 #ifdef TOOLS_MEM
567  tools::mem::increment(s_class().c_str());
568 #endif
569  if(a_data) {
570  size_t num = m_size/sizeof(float);
571  m_data = new float[num];
572 #ifdef TOOLS_MEM
573  tools::mem::increment(tools::s_new().c_str());
574 #endif
575  ::memcpy(m_data,a_data,m_size);
576  }
577  }

◆ ~gsto_t()

virtual tools::sg::GL_manager::gsto_t::~gsto_t ( )
inlinevirtual

Definition at line 578 of file GL_manager.

578  {
579  if(m_kind==kind_texture) {
580  ::glDeleteTextures(1,&m_gl_id);
581 #ifdef TOOLS_MEM
582  tools::mem::decrement(tools::s_tex().c_str());
583 #endif
584  } else if(m_kind==kind_buffer) {
585 #ifdef TOOLS_HAS_GL_VBO
586  ::glDeleteBuffers(1,&m_gl_id);
587 #ifdef TOOLS_MEM
588  tools::mem::decrement(tools::s_gsto().c_str());
589 #endif
590 #endif
591  } else if(m_kind==kind_list) {
592  if(m_gl_id) {
593 #ifdef TOOLS_HAS_GL_LIST
594  ::glDeleteLists(m_gl_id,1);
595 #ifdef TOOLS_MEM
596  tools::mem::decrement(tools::s_gsto().c_str());
597 #endif
598 #endif
599  }
600  }
601 
602  if(m_data) {
603  delete [] m_data;
604 #ifdef TOOLS_MEM
605  tools::mem::decrement(tools::s_new().c_str());
606 #endif
607  }
608 #ifdef TOOLS_MEM
609  tools::mem::decrement(s_class().c_str());
610 #endif
611  }

Member Function Documentation

◆ bind()

void tools::sg::GL_manager::gsto_t::bind ( ) const
inline

Definition at line 670 of file GL_manager.

670  {
671  if(m_kind==kind_texture) {
672  ::glBindTexture(GL_TEXTURE_2D,m_gl_id);
673  } else if(m_kind==kind_buffer) {
674 #ifdef TOOLS_HAS_GL_VBO
675  ::glBindBuffer(GL_ARRAY_BUFFER,m_gl_id);
676 #endif
677  }
678  }

◆ is_valid()

bool tools::sg::GL_manager::gsto_t::is_valid ( ) const
inline

Definition at line 654 of file GL_manager.

654  {
655  if(m_kind==kind_texture) {
656  return (::glIsTexture(m_gl_id)==GL_TRUE?true:false);
657  } else if(m_kind==kind_buffer) {
658 #ifdef TOOLS_HAS_GL_VBO
659  return (::glIsBuffer(m_gl_id)==GL_TRUE?true:false);
660 #endif
661  } else if(m_kind==kind_list) {
662 #ifdef TOOLS_HAS_GL_LIST
663  return (::glIsList(m_gl_id)==GL_TRUE?true:false);
664 #endif
665  } else if(m_kind==kind_memory) {
666  return true;
667  }
668  return false;
669  }

Member Data Documentation

◆ m_data

float* tools::sg::GL_manager::gsto_t::m_data

Definition at line 683 of file GL_manager.

◆ m_gl_id

unsigned int tools::sg::GL_manager::gsto_t::m_gl_id

Definition at line 680 of file GL_manager.

◆ m_kind

kind tools::sg::GL_manager::gsto_t::m_kind

Definition at line 681 of file GL_manager.

◆ m_size

size_t tools::sg::GL_manager::gsto_t::m_size

Definition at line 682 of file GL_manager.


The documentation for this class was generated from the following file:
tools::sg::GL_manager::gsto_t::kind_buffer
@ kind_buffer
Definition: GL_manager:555
tools::sg::GL_manager::gsto_t::kind_list
@ kind_list
Definition: GL_manager:556
tools::sg::GL_manager::gsto_t::kind_texture
@ kind_texture
Definition: GL_manager:554
tools::sg::GL_manager::gsto_t::m_kind
kind m_kind
Definition: GL_manager:681
tools::sg::GL_manager::gsto_t::m_data
float * m_data
Definition: GL_manager:683
tools::sg::GL_manager::gsto_t::kind_memory
@ kind_memory
Definition: GL_manager:557
tools::sg::GL_manager::gsto_t::m_size
size_t m_size
Definition: GL_manager:682
tools::sg::GL_manager::gsto_t::m_gl_id
unsigned int m_gl_id
Definition: GL_manager:680