   glutInitWindowPosition(0, 0);
   glutCreateWindow("cuda-boids");
 
+  // Set GLUT functions for simulation
   glutReshapeFunc(windowResize);
   glutDisplayFunc(Render);
   glutIdleFunc(idleSim);

#include <ctype.h>
#include <assert.h>
#include <vector>
#ifdef __APPLE__
#include <OpenGL/gl.h>
#include <GLUT/glut.h>

#endif
// CUDA
#include <cuda_runtime.h>
#include <cuda_gl_interop.h> // interop functionality
#include <helper_cuda.h>
#include <helper_cuda_gl.h> // checkCudaErrors()
// COMMON
#include <aligned_allocator.h>
// Object Headers
#include "boid.h"
#include "flock.h"
#include "vector3f.h"

// Rotation of X-axis camera perspective
double rX = 0.0;
// Rotation of Y-axis camera perspective
double rY = 0.0;
// Time var to increment function over time
float sim_time = 0.0;
// Number of boids in simulation
int n = 0;
// Monitor metrics
const unsigned int window_width = 512;
const unsigned int window_height = 512;
// Mesh metrics
const unsigned int mesh_width = 256;
const unsigned int mesh_height = 256;
// OpenGL Vertex Buffer Object
GLuint positionsVBO;
struct cudaGraphicsResource* positionsVBO_CUDA;

/* Kernel function sent to GPU that does calculations required in boid algorithm*/
__global__ void kernel(float4* positions, unsigned int width, unsigned int height, float t) {
   unsigned int x = blockIdx.x * blockDim.x + threadIdx.x;
   unsigned int y = blockIdx.y * blockDim.y + threadIdx.y;
