2 // Simple BeOS GLView demo
3 // Written by Brian Paul
4 // Changes by Philippe Houdoin
5 // This file is in the public domain.
10 #include <Application.h>
14 class MyGL
: public BGLView
17 MyGL(BRect rect
, char *name
, ulong options
);
19 virtual void AttachedToWindow();
21 virtual void FrameResized(float w
, float h
);
25 void Reshape(float w
, float h
);
30 class MyWindow
: public BWindow
33 MyWindow(BRect frame
);
34 virtual bool QuitRequested();
38 MyWindow::MyWindow(BRect frame
)
39 : BWindow(frame
, "demo", B_TITLED_WINDOW
, B_NOT_ZOOMABLE
)
41 // Make OpenGL view and put it in the window
45 MyGL
*gl
= new MyGL(r
, "GL", BGL_RGB
| BGL_DOUBLE
);
47 SetPulseRate(1000000 / 30);
50 bool MyWindow::QuitRequested()
52 be_app
->PostMessage(B_QUIT_REQUESTED
);
58 MyGL::MyGL(BRect rect
, char *name
, ulong options
)
59 : BGLView(rect
, name
, B_FOLLOW_ALL_SIDES
, B_PULSE_NEEDED
, options
)
65 void MyGL::AttachedToWindow()
67 BGLView::AttachedToWindow();
70 glClearColor(0.7, 0.7, 0, 0);
71 Reshape(Bounds().Width(), Bounds().Height());
76 void MyGL::FrameResized(float w
, float h
)
78 BGLView::FrameResized(w
, h
);
99 glClear(GL_COLOR_BUFFER_BIT
);
103 glRotated(mAngle
, 0, 0, 1);
121 void MyGL::Reshape(float w
, float h
)
123 glViewport(0, 0, (int) (w
+ 1), (int) (h
+ 1));
124 glMatrixMode(GL_PROJECTION
);
126 glFrustum(-1, 1, -1, 1, 10, 30);
127 glMatrixMode(GL_MODELVIEW
);
129 glTranslatef(0, 0, -18);
133 int main(int argc
, char *argv
[])
135 BApplication
*app
= new BApplication("application/demo");
137 // make top-level window
138 MyWindow
*win
= new MyWindow(BRect(100, 100, 500, 500));