6b0b9576d663c93623726670f35eb9ed48bcf93f
1 // $Id: demo.cpp,v 1.2 2004/08/14 09:59:16 phoudoin Exp $
3 // Simple BeOS GLView demo
4 // Written by Brian Paul
5 // Changes by Philippe Houdoin
6 // This file is in the public domain.
11 #include <Application.h>
15 class MyGL
: public BGLView
18 MyGL(BRect rect
, char *name
, ulong options
);
20 virtual void AttachedToWindow();
22 virtual void FrameResized(float w
, float h
);
26 void Reshape(float w
, float h
);
31 class MyWindow
: public BWindow
34 MyWindow(BRect frame
);
35 virtual bool QuitRequested();
39 MyWindow::MyWindow(BRect frame
)
40 : BWindow(frame
, "demo", B_TITLED_WINDOW
, B_NOT_ZOOMABLE
)
42 // Make OpenGL view and put it in the window
46 MyGL
*gl
= new MyGL(r
, "GL", BGL_RGB
| BGL_DOUBLE
);
48 SetPulseRate(1000000 / 30);
51 bool MyWindow::QuitRequested()
53 be_app
->PostMessage(B_QUIT_REQUESTED
);
59 MyGL::MyGL(BRect rect
, char *name
, ulong options
)
60 : BGLView(rect
, name
, B_FOLLOW_ALL_SIDES
, B_PULSE_NEEDED
, options
)
66 void MyGL::AttachedToWindow()
68 BGLView::AttachedToWindow();
71 glClearColor(0.7, 0.7, 0, 0);
72 Reshape(Bounds().Width(), Bounds().Height());
77 void MyGL::FrameResized(float w
, float h
)
79 BGLView::FrameResized(w
, h
);
100 glClear(GL_COLOR_BUFFER_BIT
);
104 glRotated(mAngle
, 0, 0, 1);
122 void MyGL::Reshape(float w
, float h
)
124 glViewport(0, 0, (int) (w
+ 1), (int) (h
+ 1));
125 glMatrixMode(GL_PROJECTION
);
127 glFrustum(-1, 1, -1, 1, 10, 30);
128 glMatrixMode(GL_MODELVIEW
);
130 glTranslatef(0, 0, -18);
134 int main(int argc
, char *argv
[])
136 BApplication
*app
= new BApplication("application/demo");
138 // make top-level window
139 MyWindow
*win
= new MyWindow(BRect(100, 100, 500, 500));