import boxy, opengl, opengl/glut let windowSize = ivec2(1280, 800) proc display() {.cdecl.} # Forward declaration glutInit() glutInitDisplayMode(GLUT_DOUBLE) glutInitWindowSize(windowSize.x, windowSize.y) discard glutCreateWindow("GLUT + Boxy") glutDisplayFunc(display) loadExtensions() let bxy = newBoxy() # Load the images. bxy.addImage("bg", readImage("examples/data/bg.png")) bxy.addImage("ring1", readImage("examples/data/ring1.png")) bxy.addImage("ring2", readImage("examples/data/ring2.png")) bxy.addImage("ring3", readImage("examples/data/ring3.png")) var frame: int # Called when it is time to draw a new frame. proc display() {.cdecl.} = # Clear the screen and begin a new frame. bxy.beginFrame(windowSize) # Draw the bg. bxy.drawImage("bg", rect = rect(vec2(0, 0), windowSize.vec2)) # Draw the rings. let center = windowSize.vec2 / 2 bxy.drawImage("ring1", center, angle = frame.float / 100) bxy.drawImage("ring2", center, angle = -frame.float / 190) bxy.drawImage("ring3", center, angle = frame.float / 170) # End this frame, flushing the draw commands. bxy.endFrame() # Swap buffers displaying the new Boxy frame. glutSwapBuffers() inc frame # Ask glut to draw next frame glutPostRedisplay() glutMainLoop()