While it's possible to download packages and install them manually, it's such a hassle. Fortunately for us, OS X has an unofficial package manager called http://brew.sh Let's install it. Open you Terminal and paste the following code:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Great. Homebrew will automatically install packages to /usr/local. Conveniently, that directory is already in your include and link paths.
Now, some bad news. Freeglut will not run properly on OS X. It attempts to run through the X-Windows server. Unfortunately for us, X11/XQuartz (the X-Windows emulations on OS X) will not support an OpenGL context past OpenGL 1.3. So we will have to use a newer library, called GLFW. Let's install that now.
In Terminal:
brew install glfw
GLFW3 should now be installed. Here's a substitute tutorial file with GLFW instead of freeglut.
/* Ask for an OpenGL Core Context */
#define GLFW_INCLUDE_GLCOREARB
#include <GLFW/glfw3.h>
#define BUFFER_OFFSET(i) ((char *)NULL + (i))
int main(int argc, char** argv)
{
GLFWwindow* window;
/* Initialize the library */
if ( !glfwInit() )
{
return -1;
}
#ifdef __APPLE__
/* We need to explicitly ask for a 3.2 context on OS X */
glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint (GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint (GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
#endif
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow( 1280, 720, "Hello World", NULL, NULL );
if (!window)
{
glfwTerminate();
return -1;
}
/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear the buffers
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
Now we need to compile this code. GLFW needs to link against several OS X library. Here's the compiler invokation to compile this code sample properly.
clang++ -std=c++11 -stdlib=libc++ -lglfw3 -framework CoreVideo -framework OpenGL -framework IOKit -framework Cocoa -framework Carbon </path/to/cpp/file>
You can run the resulting file by typing ./a.out
Congratulations! You've completed your first OS X OpenGL project.
I need to remove all of the
glfwWindowHint(...)
lines in order to actually render something on canvas. Any idea why this happens? I've tried 4.1 as well nothing changedAll of the tutorials I've found also includes the exact same lines. I'm confused
Update found it:
I specified a very old version of GLSL (1.0) in shader definitions. That was the problem