2025-10-04 14:54:46 +00:00
|
|
|
#include <Mw/Milsko.h>
|
2025-10-04 16:34:24 +00:00
|
|
|
#include <Mw/Widget/OpenGL.h>
|
2025-10-04 14:54:46 +00:00
|
|
|
|
|
|
|
|
#include <GL/gl.h>
|
|
|
|
|
|
|
|
|
|
MwWidget opengl;
|
|
|
|
|
|
|
|
|
|
static void draw(void);
|
|
|
|
|
static void idle(void);
|
|
|
|
|
static void reshape(int width, int height);
|
|
|
|
|
static void init(void);
|
2025-10-11 11:39:41 +00:00
|
|
|
static void key(int k);
|
2025-10-04 14:54:46 +00:00
|
|
|
|
|
|
|
|
static void tick(MwWidget handle, void* user, void* client) {
|
|
|
|
|
(void)handle;
|
|
|
|
|
(void)user;
|
|
|
|
|
(void)client;
|
|
|
|
|
|
|
|
|
|
draw();
|
|
|
|
|
idle();
|
|
|
|
|
|
|
|
|
|
MwOpenGLSwapBuffer(opengl);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void resize(MwWidget handle, void* user, void* client) {
|
|
|
|
|
int ww, wh;
|
|
|
|
|
|
|
|
|
|
(void)handle;
|
|
|
|
|
(void)user;
|
|
|
|
|
(void)client;
|
|
|
|
|
|
|
|
|
|
ww = MwGetInteger(handle, MwNwidth) - 100;
|
|
|
|
|
wh = MwGetInteger(handle, MwNheight) - 100;
|
|
|
|
|
|
|
|
|
|
MwVaApply(opengl,
|
|
|
|
|
MwNwidth, ww,
|
|
|
|
|
MwNheight, wh,
|
|
|
|
|
NULL);
|
|
|
|
|
|
|
|
|
|
reshape(ww, wh);
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-11 11:39:41 +00:00
|
|
|
static void key_pressed(MwWidget handle, void* user, void* client) {
|
|
|
|
|
key(*(int*)client);
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-04 14:54:46 +00:00
|
|
|
int main() {
|
|
|
|
|
MwWidget window;
|
|
|
|
|
|
2025-10-10 11:45:27 +00:00
|
|
|
window = MwVaCreateWidget(MwWindowClass, "main", NULL, MwDEFAULT, MwDEFAULT, 500, 500,
|
2025-10-04 14:54:46 +00:00
|
|
|
MwNtitle, TITLE,
|
|
|
|
|
NULL);
|
|
|
|
|
opengl = MwCreateWidget(MwOpenGLClass, "opengl", window, 50, 50, 400, 400);
|
|
|
|
|
|
|
|
|
|
MwOpenGLMakeCurrent(opengl);
|
|
|
|
|
|
|
|
|
|
init();
|
|
|
|
|
reshape(400, 400);
|
|
|
|
|
|
|
|
|
|
MwAddUserHandler(window, MwNresizeHandler, resize, NULL);
|
|
|
|
|
MwAddUserHandler(window, MwNtickHandler, tick, NULL);
|
|
|
|
|
|
2025-10-11 11:39:41 +00:00
|
|
|
MwAddUserHandler(opengl, MwNkeyHandler, key_pressed, NULL);
|
|
|
|
|
|
2025-10-04 14:54:46 +00:00
|
|
|
MwLoop(window);
|
|
|
|
|
}
|