nux-1.16.0
nux::PBuffer Class Reference

List of all members.

Public Member Functions

 PBuffer (const char *strMode, bool managed=false)
bool Initialize (int iWidth, int iHeight, bool bShareContexts, bool bShareObjects)
void Destroy ()
void Activate (PBuffer *current=NULL)
void Deactivate ()
unsigned int GetSizeInBytes ()
 return the total size in bytes of the PBuffer
unsigned int CopyToBuffer (void *ptr, int w=-1, int h=-1)
 make a copy the entire PBuffer in the memory.
int GetNumComponents ()
int GetBitsPerComponent ()
int GetWidth ()
int GetHeight ()
bool IsSharedContext ()

Protected Attributes

int m_iWidth
int m_iHeight
int m_iNComponents
int m_iBitsPerComponent
const char * m_strMode
bool m_bSharedContext
bool m_bShareObjects

Detailed Description

Definition at line 67 of file GLPBuffer.h.


Member Function Documentation

unsigned int nux::PBuffer::CopyToBuffer ( void *  ptr,
int  w = -1,
int  h = -1 
)

make a copy the entire PBuffer in the memory.

You have to allocate this area (ptr). if ever you want to read a smaller size : specify it through w,h. otherwise w=h=-1

Definition at line 1007 of file GLPBuffer.cpp.

  {
    GLenum format = 0;
    GLenum type = 0;

    switch (m_iNComponents)
    {
      case 1: //
        format = GL_LUMINANCE; // is it right to ask for Red only component ?
        break;
      case 2:
        format = GL_LUMINANCE_ALPHA; //How to ask for GL_RG ??
        break;
      case 3:
        format = GL_RGB;
        break;
      case 4:
        format = GL_RGBA;
        break;
    }

    switch (m_iBitsPerComponent)
    {
      case 8:
        type = GL_UNSIGNED_BYTE;
        break;
      case 32:
        type = GL_FLOAT;
        break;
#ifdef GL_NV_half_float
      case 16:
        type = GL_HALF_FLOAT_NV;
        break;
#endif
      default:
        nuxDebugMsg ("unknown m_iBitsPerComponent\n");
#       if defined(WIN32)
        __debugbreak();
#       endif
    }

    Activate();

    if ( (w < 0) || (w > m_iWidth) )
      w = m_iWidth;

    if ( (h < 0) || (h > m_iHeight) )
      h = m_iHeight;

    glReadPixels (0, 0, w, h, format, type, ptr);
    Deactivate();
    return w * h * (m_iNComponents / 8);
  }

The documentation for this class was generated from the following files:
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends