系统:macOS 12.2, M1 pro芯片
IDE:xcode 13.4
下载brew
brew脚本安装
1.安装完后输入
brew -v
可能会提示让你输入
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-core
git config --global --add safe.directory /opt/homebrew/Library/Taps/homebrew/homebrew-cask
把这两行分别输入运行
再次查看版本
brew -v
提示如下,表示homebrew-core和homebrew-cask模部分也安装正常
Homebrew 4.0.16-31-g7d8815c
Homebrew/homebrew-core (git revision e9a64b892c3; last commit 2023-05-04)
Homebrew/homebrew-cask (git revision 4805a6f785; last commit 2023-05-04)
2.接下来安装glfw,glew
分别输入
brew install glfw
brew install glew
安装结束后可输入
brew list
结果如下,则表明glew和glfw安装正常
glew glfw
3.可以输入
brew list glew
可以看到glew对应的安装目录,glfw也在同一路径
/opt/homebrew/Cellar/glew/2.2.0_1/
注意opt目录是mac系统里的隐藏目录,正常无法访问
可以在访达里输入command+shit+g
在弹出的输入框输入
/opt
就可以进入对应目录
4.xcode新建项目
选择macOs新建控制台工程
点击左边工程,进入配置,选择build settting
在Search Paths中选择Header Search Paths和Library Search Paths分别倒入glfw和glew的include与lib目录
通过前面的指令可以找到这两个文件夹
然后选择Build Phases,选中Link Binary With Libraries,倒入相关库
其中OpenGL.framework为系统库,直接点+然后搜索就行
glfw与glew导入库的目录
5.配置完成完后,可以在main.cpp文件输入下面代码进行测试
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <iostream>
void processInput(GLFWwindow* window)
{
if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS)
glfwSetWindowShouldClose(window, true);
}
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
//OpenGL GLFW Window
GLFWwindow* window = glfwCreateWindow(800, 600, "test", NULL, NULL);
if (window == NULL)
{
printf("Open window failed");
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glewExperimental = true;
if (glewInit()!=GLEW_OK)
{
printf("Init GLEW failed.");
glfwTerminate();
return -1;
}
glViewport(0, 0, 800, 600);
while (!glfwWindowShouldClose(window))
{
processInput(window);
glClearColor(0.0f, 0.5f, 0.5f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
运行成功的话会出现如下窗口