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