Область OpenGL в FLTK - растяжение Fl_Widget
От: Vanoo  
Дата: 08.05.07 06:18
Оценка:
Здравствуйте!
Хочу сделать в окошке Fl_Window область в которой отображается OpenGL избражение. Прочитал документацию и делаю следующим образом:


//Наследуюсь
class Drawing : public Fl_Widget {
  void draw();
public:
  Drawing(int x,int y,int w,int h,const char *l = 0) : Fl_Widget(x,y,w,h,l)
};

void Drawing::draw()
  {    
      Fl::gl_visual(FL_RGB);    
     gl_start();
   //valid(1);     
    glViewport(0,0, 1,1);
    glLoadIdentity();
    glScaled(1,1,1);
    glShadeModel(GL_SMOOTH);
    glClearColor (1.0, 1.0, 1.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT);        
    glLoadName(1); 
      glColor3d(10,10,0);
      glLineWidth(20);
      glBegin(GL_LINES);
        glVertex3f(0,0,0); 
        glVertex3f(1,1,0);           
      glEnd();
   gl_finish();


int main(int argc, char** argv) {
  GroupCyr = new TGroupV;
  GroupCyr->X = 0;
  GroupCyr->Y = 0;
  GroupCyr->O0 = 0;
  tGr = 0;       
  Fl_Window* w;
  { Fl_Window* o = new Fl_Window(393, 372);
    w = o;
    { Fl_Group* o = new Fl_Group(0, 0, 250, 375);
      o->box(FL_UP_BOX);
      o->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
      Drawing* z = new Drawing(0, 0, 100, 100);
      o->end();
    }
    { Fl_Group* o = new Fl_Group(250, 0, 145, 370);
      o->end();
      Fl_Group::current()->resizable(o);
    }
    o->end();
  }
    w->show();      
    return Fl::run();
}


В результате область отображения OpenGL (объект Drawing), растягивается до размеров всего окна!!! Когда заменяю Drawing на Fl_Box, то все ОК.
Подскажите пожалуйста, как быть???? (Скоро сдавать диплом, а эта часть все тормозит)


08.05.07 14:53: Перенесено модератором из 'C/C++' — Кодт
Re: Область OpenGL в FLTK - растяжение Fl_Widget
От: Vanoo  
Дата: 08.05.07 06:20
Оценка:
Здравствуйте, Vanoo, Вы писали:

V>Здравствуйте!

V>Хочу сделать в окошке Fl_Window область в которой отображается OpenGL избражение. Прочитал документацию и делаю следующим образом:


V>
V>//Наследуюсь
V>class Drawing : public Fl_Widget {
V>  void draw();
V>public:
V>  Drawing(int x,int y,int w,int h,const char *l = 0) : Fl_Widget(x,y,w,h,l)
V>};

V>void Drawing::draw()
V>  {    
V>      Fl::gl_visual(FL_RGB);    
V>     gl_start();
V>   //valid(1);     
V>    glViewport(0,0, 1,1);
V>    glLoadIdentity();
V>    glScaled(1,1,1);
V>    glShadeModel(GL_SMOOTH);
V>    glClearColor (1.0, 1.0, 1.0, 0.0);
V>    glClear(GL_COLOR_BUFFER_BIT);        
V>    glLoadName(1); 
V>      glColor3d(10,10,0);
V>      glLineWidth(20);
V>      glBegin(GL_LINES);
V>        glVertex3f(0,0,0); 
V>        glVertex3f(1,1,0);           
V>      glEnd();
V>   gl_finish();


V>int main(int argc, char** argv) {
V>  GroupCyr = new TGroupV;
V>  GroupCyr->X = 0;
V>  GroupCyr->Y = 0;
V>  GroupCyr->O0 = 0;
V>  tGr = 0;       
V>  Fl_Window* w;
V>  { Fl_Window* o = new Fl_Window(393, 372);
V>    w = o;
V>    { Fl_Group* o = new Fl_Group(0, 0, 250, 375);
      o->>box(FL_UP_BOX);
      o->>align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
V>      Drawing* z = new Drawing(0, 0, 100, 100);
      o->>end();
V>    }
V>    { Fl_Group* o = new Fl_Group(250, 0, 145, 370);
      o->>end();
V>      Fl_Group::current()->resizable(o);
V>    }
    o->>end();
V>  }
    w->>show();      
V>    return Fl::run();
V>}

V>


V>В результате область отображения OpenGL (объект Drawing), растягивается до размеров всего окна!!! Когда заменяю Drawing на Fl_Box, то все ОК.

V>Подскажите пожалуйста, как быть???? (Скоро сдавать диплом, а эта часть все тормозит)

Среда разработки Dev-C++ 4.9.9.0
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.