Changeset 1196


Ignore:
Timestamp:
Oct 28, 2008 6:12:55 PM (15 years ago)
Author:
gah
Message:
 
Location:
trunk/packages/vizservers/nanovis
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/packages/vizservers/nanovis/Trace.cpp

    r911 r1196  
    22#include <stdio.h>
    33#include <stdarg.h>
     4
     5#include <GL/glew.h>
     6#include <GL/glut.h>
    47
    58void Trace(const char* format, ...)
     
    1518}
    1619
     20void
     21CheckFramebuffer(const char *string)
     22{
     23  fprintf(stderr, "FB Status: %s: ", string);
     24  GLenum status = (GLenum)glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);
     25  switch(status) {
     26    case GL_FRAMEBUFFER_COMPLETE_EXT:
     27      fprintf(stderr, "<<<< OK >>>>\n");
     28      break;
     29    case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:
     30      fprintf(stderr, "GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT\n");
     31      break;
     32    case GL_FRAMEBUFFER_UNSUPPORTED_EXT:
     33      fprintf(stderr, "GL_FRAMEBUFFER_UNSUPPORTED_EXT\n");
     34      break;
     35    case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:
     36      fprintf(stderr, "GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT\n");
     37      break;
     38    case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:
     39      fprintf(stderr, "GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT\n");
     40      break;
     41    case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT:
     42      fprintf(stderr, "GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT\n");
     43      break;
     44    case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT:
     45      fprintf(stderr, "GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT\n");
     46      break;
     47    case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT:
     48      fprintf(stderr, "GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT\n");
     49      break;
     50    default:
     51      fprintf(stderr, "UNKNOWN framebuffer status %d\n", status);
     52  }
     53}
     54
     55bool
     56CheckGL(const char *string)
     57{
     58  fprintf(stderr, "GL Status: %s: ", string);
     59  GLenum status = (GLenum)glGetError();
     60  switch(status) {
     61    case GL_NO_ERROR:
     62      fprintf(stderr, "OK\n");
     63      return true;
     64    case GL_INVALID_ENUM:
     65      fprintf(stderr, "GL_INVALID_ENUM\n");
     66      break;
     67    case GL_INVALID_VALUE:
     68      fprintf(stderr, "GL_INVALID_VALUE\n");
     69      break;
     70    case GL_INVALID_OPERATION:
     71      fprintf(stderr, "GL_INVALID_OPERATION\n");
     72      break;
     73    case GL_STACK_OVERFLOW:
     74      fprintf(stderr, "GL_STACK_OVERFLOW\n");
     75      break;
     76    case GL_STACK_UNDERFLOW:
     77      fprintf(stderr, "GL_STACK_UNDERFLOW\n");
     78      break;
     79    case GL_OUT_OF_MEMORY:
     80      fprintf(stderr, "GL_OUT_OF_MEMORY\n");
     81      break;
     82    case GL_INVALID_FRAMEBUFFER_OPERATION_EXT:
     83      fprintf(stderr, "GL_INVALID_FRAMEBUFFER_OPERATION_EXT\n");
     84      break;
     85    default:
     86      fprintf(stderr, "UNKNOWN GL status %d\n", status);
     87  }
     88  return false;
     89}
     90
     91
  • trunk/packages/vizservers/nanovis/Trace.h

    r911 r1196  
    33
    44extern void Trace(const char* format, ...);
    5 
     5extern void CheckFramebuffer(const char *string);
     6extern bool CheckGL(const char *string);
    67#endif
  • trunk/packages/vizservers/nanovis/define.h

    r1188 r1196  
    3636typedef GLuint NVISid;                  //OpenGL identifier: unsigned int
    3737
     38#define CHECK_FRAMEBUFFER_STATUS() \
     39{ \
     40 GLenum status;  \
     41 status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);  \
     42 fprintf(stderr, "%x\n", status); \
     43 switch(status) {  \
     44 case GL_FRAMEBUFFER_COMPLETE_EXT:  \
     45   fprintf(stderr,"framebuffer complete!\n"); \
     46   break;  \
     47 case GL_FRAMEBUFFER_UNSUPPORTED_EXT:  \
     48   fprintf(stderr,"framebuffer GL_FRAMEBUFFER_UNSUPPORTED_EXT\n"); \
     49    /* you gotta choose different formats */  \
     50   assert(0);  \
     51   break;  \
     52 case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT:  \
     53   fprintf(stderr,"framebuffer INCOMPLETE_ATTACHMENT\n"); \
     54   break;  \
     55 case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT:  \
     56   fprintf(stderr,"framebuffer FRAMEBUFFER_MISSING_ATTACHMENT\n"); \
     57   break;  \
     58 case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT:  \
     59   fprintf(stderr,"framebuffer FRAMEBUFFER_DIMENSIONS\n");\
     60   break; \
     61 case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: \
     62   fprintf(stderr,"framebuffer INCOMPLETE_FORMATS\n");\
     63   break; \
     64 case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: \
     65   fprintf(stderr,"framebuffer INCOMPLETE_DRAW_BUFFER\n");\
     66   break; \
     67 case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: \
     68   fprintf(stderr,"framebuffer INCOMPLETE_READ_BUFFER\n");\
     69   break; \
     70 case GL_FRAMEBUFFER_BINDING_EXT: \
     71   fprintf(stderr,"framebuffer BINDING_EXT\n");\
     72   break; \
     73/*
     74 *  case GL_FRAMEBUFFER_STATUS_ERROR_EXT: \
     75 *     fprintf(stderr,"framebuffer STATUS_ERROR\n");\
     76 *        break; \
     77 *        */ \
     78 default: \
     79   fprintf(stderr,"unknown framebuffer error %d\n", status);\
     80   /* programming error; will fail on all hardware */ \
     81   assert(0); \
     82 }\
     83}
     84
     85#ifdef notdef
     86
    3887
    3988#define CHECK_FRAMEBUFFER_STATUS()                            \
     
    53102     }                                                        \
    54103   }
     104#endif
    55105
    56106// use this to send debug messages back to the client
  • trunk/packages/vizservers/nanovis/global.h

    r1111 r1196  
    2222#include <stdio.h>
    2323
     24#ifdef notdef
     25#define CHECK_FRAMEBUFFER_STATUS() \
     26{\
     27 GLenum status; \
     28 status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); \
     29 fprintf(stderr, "%x\n", status);\
     30 switch(status) { \
     31 case GL_FRAMEBUFFER_COMPLETE_EXT: \
     32   fprintf(stderr,"framebuffer complete!\n");\
     33   break; \
     34 case GL_FRAMEBUFFER_UNSUPPORTED_EXT: \
     35   fprintf(stderr,"framebuffer GL_FRAMEBUFFER_UNSUPPORTED_EXT\n");\
     36    /* you gotta choose different formats */ \
     37   assert(0); \
     38   break; \
     39 case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: \
     40   fprintf(stderr,"framebuffer INCOMPLETE_ATTACHMENT\n");\
     41   break; \
     42 case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: \
     43   fprintf(stderr,"framebuffer FRAMEBUFFER_MISSING_ATTACHMENT\n");\
     44   break; \
     45 case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: \
     46   fprintf(stderr,"framebuffer FRAMEBUFFER_DIMENSIONS\n");\
     47   break; \
     48 case GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT: \
     49   fprintf(stderr,"framebuffer INCOMPLETE_DUPLICATE_ATTACHMENT\n");\
     50   break; \
     51 case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: \
     52   fprintf(stderr,"framebuffer INCOMPLETE_FORMATS\n");\
     53   break; \
     54 case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: \
     55   fprintf(stderr,"framebuffer INCOMPLETE_DRAW_BUFFER\n");\
     56   break; \
     57 case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: \
     58   fprintf(stderr,"framebuffer INCOMPLETE_READ_BUFFER\n");\
     59   break; \
     60 case GL_FRAMEBUFFER_BINDING_EXT: \
     61   fprintf(stderr,"framebuffer BINDING_EXT\n");\
     62   break; \
     63/*
     64 *  case GL_FRAMEBUFFER_STATUS_ERROR_EXT: \
     65 *     fprintf(stderr,"framebuffer STATUS_ERROR\n");\
     66 *        break; \
     67 *        */ \
     68 default: \
     69   /* programming error; will fail on all hardware */ \
     70   assert(0); \
     71 }\
     72}
     73
    2474#define CHECK_FRAMEBUFFER_STATUS()                            \
    2575  {                                                           \
     
    3888     }                                                        \
    3989   }
    40 
     90#endif
    4191
    4292inline void
  • trunk/packages/vizservers/nanovis/imgLoaders/BMPImageLoaderImpl.cpp

    r929 r1196  
    2020    Image* image = 0;
    2121
     22    printf("opening image file \"%s\"\n", fileName);
    2223    FILE* f = fopen(fileName, "rb");
    2324
  • trunk/packages/vizservers/nanovis/nanovis.cpp

    r1195 r1196  
    4242
    4343#include "nanovis.h"
     44#include "define.h"
    4445#include "RpField1D.h"
    4546#include "RpFieldRect3D.h"
     
    133134
    134135//frame buffer for final rendering
    135 NVISid NanoVis::final_fbo = 0;
     136char dummy0[2000];
    136137NVISid NanoVis::final_color_tex = 0;
    137138NVISid NanoVis::final_depth_rb = 0;
     139char dummy1[2000];
     140NVISid NanoVis::final_fbo = 0;
    138141int NanoVis::render_window = 0;       /* GLUT handle for the render window */
     142char dummy2[2000];
    139143int NanoVis::win_width = NPIX;        /* Width of the render window */
    140144int NanoVis::win_height = NPIX;       /* Height of the render window */
    141145
     146char dummy3[2000];
    142147unsigned char* NanoVis::screen_buffer = NULL;
     148char dummy4[2000];
    143149
    144150/* FIXME: This variable is always true. */
     
    166172CGprogram m_passthru_fprog;
    167173CGparameter m_passthru_scale_param, m_passthru_bias_param;
    168 
    169174
    170175// Variables for mouse events
     
    545550
    546551int
    547 NanoVis::render_legend(
    548     TransferFunction *tf,
    549     double min, double max,
    550     int width, int height,
    551     const char* volArg)
    552 {
     552NanoVis::render_legend(TransferFunction *tf, double min, double max,
     553                        int width, int height, const char* volArg)
     554{
     555    if (debug_flag) {
     556        fprintf(stderr, "in render_legend\n");
     557    }
    553558    int old_width = win_width;
    554559    int old_height = win_height;
     
    583588    resize_offscreen_buffer(old_width, old_height);
    584589
     590    if (debug_flag) {
     591        fprintf(stderr, "leaving render_legend\n");
     592    }
    585593    return TCL_OK;
    586594}
     
    590598NanoVis::init_offscreen_buffer()
    591599{
    592     //initialize final fbo for final display
     600    if (debug_flag) {
     601       fprintf(stderr, "in init_offscreen_buffer\n");
     602    }
     603   
     604    glGenTextures(1, &final_color_tex);
     605    glBindTexture(GL_TEXTURE_2D, final_color_tex);
     606
     607    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
     608    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
     609#ifdef NV40
     610    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, win_width, win_height, 0,
     611                 GL_RGB, GL_INT, NULL);
     612#else
     613    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, win_width, win_height, 0,
     614                 GL_RGBA, GL_INT, NULL);
     615
     616#endif
     617    if (!CheckGL("glTexImage2D")) {
     618        return;
     619    }
     620
     621    glGenRenderbuffersEXT(1, &final_depth_rb);
     622    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, final_depth_rb);
     623    glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,
     624                             GL_DEPTH_COMPONENT24, win_width, win_height);
     625
     626    // Initialize a fbo for final display.
     627    glGenFramebuffersEXT(1, &final_fbo);
     628    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, final_fbo);
     629    glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
     630                              GL_COLOR_ATTACHMENT0_EXT,
     631                              GL_TEXTURE_2D, final_color_tex, 0);
     632    glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
     633                             GL_DEPTH_ATTACHMENT_EXT,
     634                             GL_RENDERBUFFER_EXT, final_depth_rb);
     635    CheckGL("glFramebufferTexture2DEXT");
     636    CheckFramebuffer("final_fbo");
     637
     638
     639    // Check framebuffer completeness at the end of initialization.
     640    //CHECK_FRAMEBUFFER_STATUS();
     641    //NanoVis::display();
     642
     643    //assert(glGetError()==0);
     644    if (debug_flag) {
     645       fprintf(stderr, "leaving init_offscreen_buffer\n");
     646    }
     647}
     648
     649
     650//resize the offscreen buffer
     651void
     652NanoVis::resize_offscreen_buffer(int w, int h)
     653{
     654    if (debug_flag) {
     655       fprintf(stderr, "in resize_offscreen_buffer(%d, %d)\n", w, h);
     656    }
     657    win_width = w;
     658    win_height = h;
     659
     660    if (fonts) {
     661        fonts->resize(w, h);
     662    }
     663
     664    //fprintf(stderr, "screen_buffer size: %d\n", sizeof(screen_buffer));
     665    printf("screen_buffer size: %d %d\n", w, h);
     666
     667    if (screen_buffer) {
     668        delete[] screen_buffer;
     669        screen_buffer = NULL;
     670    }
     671
     672    screen_buffer = new unsigned char[4*win_width*win_height];
     673    assert(screen_buffer != NULL);
     674
     675    //delete the current render buffer resources
     676    glDeleteTextures(1, &final_color_tex);
     677    glDeleteFramebuffersEXT(1, &final_fbo);
     678
     679    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, final_depth_rb);
     680    glDeleteRenderbuffersEXT(1, &final_depth_rb);
     681
     682    //change the camera setting
     683    cam->set_screen_size(0, 0, win_width, win_height);
     684    plane_render->set_screen_size(win_width, win_height);
     685
     686    //Reinitialize final fbo for final display
    593687    glGenFramebuffersEXT(1, &final_fbo);
    594688    glGenTextures(1, &final_color_tex);
     
    596690
    597691    glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, final_fbo);
     692    CheckFramebuffer("final_fbo");
    598693
    599694    //initialize final color texture
     
    612707                              GL_TEXTURE_2D, final_color_tex, 0);
    613708
     709    CheckGL("glFramebufferText2DEXT");
     710    CheckFramebuffer("final_color_tex");
     711    CHECK_FRAMEBUFFER_STATUS();
     712
    614713    // initialize final depth renderbuffer
    615714    glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, final_depth_rb);
     
    621720
    622721    // Check framebuffer completeness at the end of initialization.
     722    CheckGL("glFramebufferRenderbufferEXT");
     723    CheckFramebuffer("final_depth_rb");
    623724    CHECK_FRAMEBUFFER_STATUS();
    624 
    625     //assert(glGetError()==0);
    626 }
    627 
    628 
    629 //resize the offscreen buffer
    630 void
    631 NanoVis::resize_offscreen_buffer(int w, int h)
    632 {
    633     win_width = w;
    634     win_height = h;
    635 
    636     if (fonts) {
    637         fonts->resize(w, h);
    638     }
    639 
    640     //fprintf(stderr, "screen_buffer size: %d\n", sizeof(screen_buffer));
    641     printf("screen_buffer size: %d %d\n", w, h);
    642 
    643     if (screen_buffer) {
    644         delete[] screen_buffer;
    645         screen_buffer = NULL;
    646     }
    647 
    648     screen_buffer = new unsigned char[4*win_width*win_height];
    649     assert(screen_buffer != NULL);
    650 
    651     //delete the current render buffer resources
    652     glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, final_fbo);
    653     glDeleteTextures(1, &final_color_tex);
    654     glDeleteFramebuffersEXT(1, &final_fbo);
    655 
    656     glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, final_depth_rb);
    657     glDeleteRenderbuffersEXT(1, &final_depth_rb);
    658 
    659     //change the camera setting
    660     cam->set_screen_size(0, 0, win_width, win_height);
    661     plane_render->set_screen_size(win_width, win_height);
    662 
    663     //Reinitialize final fbo for final display
    664     glGenFramebuffersEXT(1, &final_fbo);
    665     glGenTextures(1, &final_color_tex);
    666     glGenRenderbuffersEXT(1, &final_depth_rb);
    667 
    668     glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, final_fbo);
    669 
    670     //initialize final color texture
    671     glBindTexture(GL_TEXTURE_2D, final_color_tex);
    672     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    673     glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    674 #ifdef NV40
    675     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA16F_ARB, win_width, win_height, 0,
    676                  GL_RGB, GL_INT, NULL);
    677 #else
    678     glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, win_width, win_height, 0,
    679                  GL_RGB, GL_INT, NULL);
    680 #endif
    681     glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
    682                               GL_COLOR_ATTACHMENT0_EXT,
    683                               GL_TEXTURE_2D, final_color_tex, 0);
    684 
    685     // initialize final depth renderbuffer
    686     glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, final_depth_rb);
    687     glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT,
    688                              GL_DEPTH_COMPONENT24, win_width, win_height);
    689     glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT,
    690                                  GL_DEPTH_ATTACHMENT_EXT,
    691                                  GL_RENDERBUFFER_EXT, final_depth_rb);
    692 
    693     // Check framebuffer completeness at the end of initialization.
    694     CHECK_FRAMEBUFFER_STATUS();
    695     //assert(glGetError()==0);
     725    if (debug_flag) {
     726       fprintf(stderr, "leaving resize_offscreen_buffer(%d, %d)\n", w, h);
     727    }
    696728}
    697729
     
    790822    GLenum err = glewInit();
    791823    if (GLEW_OK != err) {
    792         //glew init failed, exit.
    793824        fprintf(stderr, "Error: %s\n", glewGetErrorString(err));
    794825        getchar();
     
    823854    grid->setFont(fonts);
    824855
     856#ifdef notdef
    825857    pointset_renderer = new PointSetRenderer();
     858#endif
    826859}
    827860
     
    830863NanoVis::initGL(void)
    831864{
     865   if (debug_flag) {
     866       fprintf(stderr, "in initGL\n");
     867   }
    832868   //buffer to store data read from the screen
    833869   if (screen_buffer) {
     
    879915   vol_renderer = new VolumeRenderer();
    880916
    881 
    882917   // create
    883918   renderContext = new graphics::RenderContext();
    884919   
    885 #ifdef notdef
    886    //I added this to debug : Wei
    887    float tmp_data[4*124];
    888    memset(tmp_data, 0, 4*4*124);
    889    TransferFunction* tmp_tf = new TransferFunction(124, tmp_data);
    890    vol_renderer->add_volume(volume[0], tmp_tf);
    891    volume[0]->get_cutplane(0)->enabled = false;
    892    volume[0]->get_cutplane(1)->enabled = false;
    893    volume[0]->get_cutplane(2)->enabled = false;
    894 
    895    //volume[1]->move(Vector3(0.5, 0.6, 0.7));
    896    //vol_renderer->add_volume(volume[1], tmp_tf);
    897 #endif
    898 
    899920   //create an 2D plane renderer
    900921   plane_render = new PlaneRenderer(g_context, win_width, win_height);
     
    910931   NanoVis::init_lic();
    911932#endif
     933   if (debug_flag) {
     934       fprintf(stderr, "leaving initGL\n");
     935   }
    912936}
    913937
     
    23852409    }
    23862410    NanoVis::initGL();
     2411#ifdef EVENTLOG
     2412    NvInitEventLog();
     2413#endif
    23872414    Tcl_DStringInit(&NanoVis::cmdbuffer);
    23882415    NanoVis::interp = initTcl();
    23892416
    2390 #ifdef EVENTLOG
    2391     NvInitEventLog();
    2392 #endif
    23932417    glutMainLoop();
    23942418
Note: See TracChangeset for help on using the changeset viewer.