diff --git a/examples/cocoa/AppDelegate.h b/examples/cocoa/AppDelegate.h index f3852bda0..155a86e0d 100644 --- a/examples/cocoa/AppDelegate.h +++ b/examples/cocoa/AppDelegate.h @@ -5,7 +5,7 @@ @property (assign, nonatomic) IBOutlet NSWindow *window; -@property (assign, atomic) NSTimer *stepTimer; +@property (assign, atomic) NSTimer *stepTimer; -(IBAction)createGlfwWindow:(id)sender; diff --git a/examples/cocoa/AppDelegate.m b/examples/cocoa/AppDelegate.m index 59cc79ed2..787ce8d0e 100644 --- a/examples/cocoa/AppDelegate.m +++ b/examples/cocoa/AppDelegate.m @@ -3,7 +3,7 @@ // Simple GLFW in Cocoa app example // Copyright (c) Andy Somogyi // -// This is a port of the GLFW basic example, originaly +// This is a port of the GLFW basic example, originaly // Copyright (c) Camilla Löwy // // This software is provided 'as-is', without any express or implied @@ -47,7 +47,7 @@ static void cocoaGlfwCloseWindow(); -(IBAction)createGlfwWindow:(id)sender { NSRect frame = self.window.frame; - + createCocoaGlfwWindow(700, 400, frame.size.width, 0); } @@ -64,18 +64,17 @@ static void cocoaGlfwCloseWindow(); } -(IBAction)run:(id)sender { - + if(self.stepTimer) { return; } - + [self.stepTimer invalidate]; - + NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(singleStep:) userInfo:nil repeats:YES]; self.stepTimer = timer; - } -(IBAction)stop:(id)sender { @@ -138,22 +137,22 @@ static void window_refresh_callback(GLFWwindow* window) float ratio; int width, height; mat4x4 m, p, mvp; - + glfwGetFramebufferSize(window, &width, &height); ratio = width / (float) height; - + glViewport(0, 0, width, height); glClear(GL_COLOR_BUFFER_BIT); - + mat4x4_identity(m); mat4x4_rotate_Z(m, m, angle); mat4x4_ortho(p, -ratio, ratio, -1.f, 1.f, 1.f, -1.f); mat4x4_mul(mvp, p, m); - + glUseProgram(program); glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat*) mvp); glDrawArrays(GL_TRIANGLES, 0, 3); - + glfwSwapBuffers(window); } @@ -165,68 +164,67 @@ static void window_close_callback(GLFWwindow* window) static void createCocoaGlfwWindow(int width, int height, int xpos, int ypos) { glfwSetErrorCallback(error_callback); - + if(win) { printf("window is already open\n"); fflush(stdout); return; } - + if (!glfwInit()) exit(EXIT_FAILURE); - + glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); - + win = glfwCreateWindow(width, height, "Simple example", NULL, NULL); if (!win) { glfwTerminate(); exit(EXIT_FAILURE); } - + glfwSetKeyCallback(win, key_callback); - + glfwSetWindowRefreshCallback(win, window_refresh_callback); - + glfwSetWindowCloseCallback(win, window_close_callback); - + glfwMakeContextCurrent(win); gladLoadGLLoader((GLADloadproc) glfwGetProcAddress); glfwSwapInterval(1); - + // NOTE: OpenGL error checks have been omitted for brevity - + glGenBuffers(1, &vertex_buffer); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer); glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); - + vertex_shader = glCreateShader(GL_VERTEX_SHADER); glShaderSource(vertex_shader, 1, &vertex_shader_text, NULL); glCompileShader(vertex_shader); - + fragment_shader = glCreateShader(GL_FRAGMENT_SHADER); glShaderSource(fragment_shader, 1, &fragment_shader_text, NULL); glCompileShader(fragment_shader); - + program = glCreateProgram(); glAttachShader(program, vertex_shader); glAttachShader(program, fragment_shader); glLinkProgram(program); - + mvp_location = glGetUniformLocation(program, "MVP"); vpos_location = glGetAttribLocation(program, "vPos"); vcol_location = glGetAttribLocation(program, "vCol"); - + glEnableVertexAttribArray(vpos_location); glVertexAttribPointer(vpos_location, 2, GL_FLOAT, GL_FALSE, sizeof(vertices[0]), (void*) 0); glEnableVertexAttribArray(vcol_location); glVertexAttribPointer(vcol_location, 3, GL_FLOAT, GL_FALSE, sizeof(vertices[0]), (void*) (sizeof(float) * 2)); - } - + static void cocoaGlfwCloseWindow() { glfwDestroyWindow(win); win = NULL;