nvfx: expose GLSL
[mesa/mesa-lb.git] / progs / beos / demo.cpp
blobae29bb80b2fa8991905c6b74cc9a9ac35f6d5f0d
2 // Simple BeOS GLView demo
3 // Written by Brian Paul
4 // Changes by Philippe Houdoin
5 // This file is in the public domain.
9 #include <stdio.h>
10 #include <Application.h>
11 #include <Window.h>
12 #include <GLView.h>
14 class MyGL : public BGLView
16 public:
17 MyGL(BRect rect, char *name, ulong options);
19 virtual void AttachedToWindow();
20 virtual void Pulse();
21 virtual void FrameResized(float w, float h);
23 private:
24 void Render();
25 void Reshape(float w, float h);
26 float mAngle;
30 class MyWindow : public BWindow
32 public:
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
42 BRect r = Bounds();
43 r.InsetBy(5, 5);
45 MyGL *gl = new MyGL(r, "GL", BGL_RGB | BGL_DOUBLE);
46 AddChild(gl);
47 SetPulseRate(1000000 / 30);
50 bool MyWindow::QuitRequested()
52 be_app->PostMessage(B_QUIT_REQUESTED);
53 return true;
58 MyGL::MyGL(BRect rect, char *name, ulong options)
59 : BGLView(rect, name, B_FOLLOW_ALL_SIDES, B_PULSE_NEEDED, options)
61 mAngle = 0.0;
65 void MyGL::AttachedToWindow()
67 BGLView::AttachedToWindow();
69 LockGL();
70 glClearColor(0.7, 0.7, 0, 0);
71 Reshape(Bounds().Width(), Bounds().Height());
72 UnlockGL();
76 void MyGL::FrameResized(float w, float h)
78 BGLView::FrameResized(w, h);
80 LockGL();
81 Reshape(w, h);
82 UnlockGL();
84 Render();
88 void MyGL::Pulse()
90 mAngle += 1.0;
91 Render();
95 void MyGL::Render()
97 LockGL();
99 glClear(GL_COLOR_BUFFER_BIT);
101 glPushMatrix();
103 glRotated(mAngle, 0, 0, 1);
104 glColor3f(0, 0, 1);
106 glBegin(GL_POLYGON);
107 glVertex2f(-1, -1);
108 glVertex2f( 1, -1);
109 glVertex2f( 1, 1);
110 glVertex2f(-1, 1);
111 glEnd();
113 glPopMatrix();
115 SwapBuffers();
117 UnlockGL();
121 void MyGL::Reshape(float w, float h)
123 glViewport(0, 0, (int) (w + 1), (int) (h + 1));
124 glMatrixMode(GL_PROJECTION);
125 glLoadIdentity();
126 glFrustum(-1, 1, -1, 1, 10, 30);
127 glMatrixMode(GL_MODELVIEW);
128 glLoadIdentity();
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));
139 win->Show();
141 app->Run();
143 delete app;
145 return 0;