#include #include #include "deps/include/glad/glad.h" #include "src/openwindow.h" #ifndef _WIN32 #include #define Window X11Window #include #undef Window void xevent(Window * w, XEvent xev) { switch (xev.type) { case MotionNotify: printf("motion: %d %d\n", xev.xbutton.x, xev.xbutton.y); break; case KeyRelease: printf("release (%s)\n", XKeysymToString(XLookupKeysym(&xev.xkey, 0))); break; case KeyPress: if (XLookupKeysym(&xev.xkey, 0) == XK_Escape) w->close = true; printf("keypress (%s)\n", XKeysymToString(XLookupKeysym(&xev.xkey, 0))); break; case ButtonPress: printf("BPress: state = %d, button = %d, x = %d, y = %d\n", xev.xbutton.state, xev.xbutton.button, xev.xbutton.x, xev.xbutton.y); printf("Type=%d\n", (int)xev.xbutton.type); break; case ButtonRelease: printf("BRelease: state = %d, button = %d, x = %d, y = %d\n", xev.xbutton.state, xev.xbutton.button, xev.xbutton.x, xev.xbutton.y); printf("Type=%d\n", (int)xev.xbutton.type); break; default: printf("Unknown event!\n"); } } #else #include #endif // _WIN32 const char * fss = "#version 330 core\n" "precision mediump float;" "out vec4 FragColor;\n" "void main()\n" "{\n" " FragColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);\n" "}"; int main(void) { Window w = openWindow("Window", 800, 600); // TODO: do this #ifndef _WIN32 windowSetEventHandler(&w, xevent); #endif // _WIN32 while (!w.close) { windowHandleEvents(&w); glClearColor(0.1f, 0.2f, 0.3f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glViewport(0, 0, 800, 600); glColor3f(1.0, 0, 0); glBegin(GL_TRIANGLES); glVertex2f(-0.5, -0.5); glVertex2f(0.5, -0.5); glVertex2f(0.0, 0.5); glEnd(); windowDraw(w); } closeWindow(w); return 0; }