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));