Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/externals/g4tools/include/toolx/sg/gl

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /externals/g4tools/include/toolx/sg/gl (Version 11.3.0) and /externals/g4tools/include/toolx/sg/gl (Version 11.1.2)


  1 // Copyright (C) 2010, Guy Barrand. All rights      1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
  2 // See the file tools.license for terms.            2 // See the file tools.license for terms.
  3                                                     3 
  4 #ifndef toolx_sg_gl                                 4 #ifndef toolx_sg_gl
  5 #define toolx_sg_gl                                 5 #define toolx_sg_gl
  6                                                     6 
  7 #include "../OpenGL"                                7 #include "../OpenGL"
  8                                                     8 
  9 #include <tools/platform> //for APPLE TargetCo      9 #include <tools/platform> //for APPLE TargetConditionals.h
 10 #include <tools/img>                               10 #include <tools/img>
 11                                                    11 
 12 #include <ostream>                                 12 #include <ostream>
 13 #include <sstream>                             << 
 14                                                    13 
 15 namespace toolx {                                  14 namespace toolx {
 16 namespace sg {                                     15 namespace sg {
 17 //namespace gl : no, problem with g4tools.         16 //namespace gl : no, problem with g4tools.
 18                                                    17 
 19 inline void gl_clear_errors() {                    18 inline void gl_clear_errors() {
 20   GLenum glerror = ::glGetError();                 19   GLenum glerror = ::glGetError();
 21   while(glerror!=GL_NO_ERROR) {                    20   while(glerror!=GL_NO_ERROR) {
 22     glerror = ::glGetError();                      21     glerror = ::glGetError();
 23   }                                                22   }
 24 }                                                  23 }
 25                                                    24 
 26 inline bool gl_dump_if_errors(std::ostream& a_     25 inline bool gl_dump_if_errors(std::ostream& a_out,const std::string& a_head) {
 27   bool retval = false;                             26   bool retval = false;
 28   GLenum glerror = ::glGetError();                 27   GLenum glerror = ::glGetError();
 29   if(glerror!=GL_NO_ERROR) {                       28   if(glerror!=GL_NO_ERROR) {
 30     a_out << a_head                                29     a_out << a_head
 31           << " we have gl errors :"                30           << " we have gl errors :"
 32           << std::endl;                            31           << std::endl;
 33     retval = true;                                 32     retval = true;
 34   }                                                33   }
 35   while(glerror!=GL_NO_ERROR) {                    34   while(glerror!=GL_NO_ERROR) {
 36     //#define GL_NO_ERROR                          35     //#define GL_NO_ERROR                       0
 37     //#define GL_INVALID_ENUM                      36     //#define GL_INVALID_ENUM                   0x0500
 38     //#define GL_INVALID_VALUE                     37     //#define GL_INVALID_VALUE                  0x0501
 39     //#define GL_INVALID_OPERATION                 38     //#define GL_INVALID_OPERATION              0x0502
 40     //#define GL_STACK_OVERFLOW                    39     //#define GL_STACK_OVERFLOW                 0x0503
 41     //#define GL_STACK_UNDERFLOW                   40     //#define GL_STACK_UNDERFLOW                0x0504
 42     //#define GL_OUT_OF_MEMORY                     41     //#define GL_OUT_OF_MEMORY                  0x0505
 43                                                    42 
 44     //#define GL_INVALID_FRAMEBUFFER_OPERATION     43     //#define GL_INVALID_FRAMEBUFFER_OPERATION  0x0506
 45                                                    44 
 46     std::ostringstream oss;                    <<  45     a_out << "0x" << std::hex << glerror << std::endl;
 47     oss << "0x" << std::hex << glerror;        << 
 48     a_out << oss.str() << std::endl;           << 
 49                                                    46 
 50     glerror = ::glGetError();                      47     glerror = ::glGetError();
 51   }                                                48   }
 52   return retval;                                   49   return retval;
 53 }                                                  50 }
 54                                                    51 
 55 inline void gl_dump_infos(std::ostream& a_out)     52 inline void gl_dump_infos(std::ostream& a_out) {
 56     std::string gl_version;                        53     std::string gl_version;
 57    {const char* _sv = (const char*)::glGetStri     54    {const char* _sv = (const char*)::glGetString(GL_VERSION);
 58     if(_sv) gl_version = _sv;}                     55     if(_sv) gl_version = _sv;}
 59                                                    56 
 60     std::string gl_vendor;                         57     std::string gl_vendor;
 61    {const char* _sv = (const char*)::glGetStri     58    {const char* _sv = (const char*)::glGetString(GL_VENDOR);
 62     if(_sv) gl_vendor = _sv;}                      59     if(_sv) gl_vendor = _sv;}
 63                                                    60 
 64     std::string gl_renderer;                       61     std::string gl_renderer;
 65    {const char* _sv = (const char*)::glGetStri     62    {const char* _sv = (const char*)::glGetString(GL_RENDERER);
 66     if(_sv) gl_renderer = _sv;}                    63     if(_sv) gl_renderer = _sv;}
 67                                                    64 
 68     std::string gl_extensions;                     65     std::string gl_extensions;
 69    {const char* _sv = (const char*)::glGetStri     66    {const char* _sv = (const char*)::glGetString(GL_EXTENSIONS);
 70     if(_sv) gl_extensions = _sv;}                  67     if(_sv) gl_extensions = _sv;}
 71                                                    68 
 72     GLint gl_texture_size;                         69     GLint gl_texture_size;
 73     ::glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl_t     70     ::glGetIntegerv(GL_MAX_TEXTURE_SIZE, &gl_texture_size);
 74                                                    71 
 75     //GLint gl_buffer_size;                        72     //GLint gl_buffer_size;
 76     //::glGetIntegerv(GL_BUFFER_SIZE, &gl_buff     73     //::glGetIntegerv(GL_BUFFER_SIZE, &gl_buffer_size);
 77                                                    74 
 78     a_out << "toolx::sg::gl::dump_infos :" <<      75     a_out << "toolx::sg::gl::dump_infos :" << std::endl;
 79     a_out << " GL_VERSION " << gl_version << s     76     a_out << " GL_VERSION " << gl_version << std::endl;
 80     a_out << " GL_VENDOR " << gl_vendor << std     77     a_out << " GL_VENDOR " << gl_vendor << std::endl;
 81     a_out << " GL_RENDERER " << gl_renderer <<     78     a_out << " GL_RENDERER " << gl_renderer << std::endl;
 82     a_out << " GL_EXTENSIONS " << gl_extension     79     a_out << " GL_EXTENSIONS " << gl_extensions << std::endl;
 83     a_out << " GL_MAX_TEXTURE_SIZE " << gl_tex     80     a_out << " GL_MAX_TEXTURE_SIZE " << gl_texture_size << std::endl;
 84     //a_out << " GL_BUFFER_SIZE " << gl_buffer     81     //a_out << " GL_BUFFER_SIZE " << gl_buffer_size << std::endl;
 85 }                                                  82 }
 86                                                    83 
 87 inline bool gl_tex_img(std::ostream& a_out,con     84 inline bool gl_tex_img(std::ostream& a_out,const tools::img_byte& a_img) {
 88     if(a_img.bpp()==1) {                           85     if(a_img.bpp()==1) {
 89       //to pass eiffel-tower.png                   86       //to pass eiffel-tower.png
 90 #if defined(ANDROID) || TARGET_OS_IPHONE           87 #if defined(ANDROID) || TARGET_OS_IPHONE
 91       tools::img_byte res;                         88       tools::img_byte res;
 92       if(!a_img.bw2x(3,res)) {                     89       if(!a_img.bw2x(3,res)) {
 93         a_out << "toolx::sg::gl::tex_img : too <<  90         a_out << "toolx::sg::gl::tex_img : toolx::img.bw2x() failed." << std::endl;
 94         return false;                              91         return false;
 95       }                                            92       }
 96       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,re     93       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,res.width(),res.height(),0,GL_RGB,GL_UNSIGNED_BYTE,res.buffer());
 97 #else                                              94 #else
 98       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,a_     95       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,a_img.width(),a_img.height(),0,GL_LUMINANCE,GL_UNSIGNED_BYTE,a_img.buffer());
 99 #endif                                             96 #endif
100     } else if(a_img.bpp()==3) {                    97     } else if(a_img.bpp()==3) {
101       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,a_     98       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGB,a_img.width(),a_img.height(),0,GL_RGB,GL_UNSIGNED_BYTE,a_img.buffer());
102     } else if(a_img.bpp()==4) {                    99     } else if(a_img.bpp()==4) {
103       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,a    100       ::glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,a_img.width(),a_img.height(),0,GL_RGBA,GL_UNSIGNED_BYTE,a_img.buffer());
104     } else {                                      101     } else {
105       a_out << "toolx::sg::gl::tex_img : img.b    102       a_out << "toolx::sg::gl::tex_img : img.bpp() " << a_img.bpp() << " not treated." << std::endl;
106       return false;                               103       return false;
107     }                                             104     }
108     return true;                                  105     return true;
109 }                                                 106 }
110                                                   107 
111 }}                                                108 }}
112                                                << 
113                                                   109 
114 #endif                                            110 #endif