返回
在M1 MacOS上使用Xcode配置OpenGL环境(arm64)
IOS
2023-12-24 22:35:32
准备工作
在开始配置OpenGL环境之前,您需要确保您的M1 Mac已安装Xcode 13或更高版本,并已启用Rosetta 2以支持arm64架构。此外,您还需要安装homebrew,这是一个方便的包管理工具,可以帮助您轻松安装各种软件和库。
安装Homebrew
- 打开终端,复制并粘贴以下命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- 按下回车键并输入您的密码以允许安装。
安装CMake
- 使用homebrew安装CMake:
brew install cmake
- 验证CMake是否已成功安装:
cmake --version
输出应类似于:
cmake version 3.22.1
安装GLEW
- 使用homebrew安装GLEW:
brew install glew
- 验证GLEW是否已成功安装:
glew-config --version
输出应类似于:
GLEW version 2.1.0
安装GLFW
- 使用homebrew安装GLFW:
brew install glfw
- 验证GLFW是否已成功安装:
glfw3 --version
输出应类似于:
glfw 3.3.8
安装GLTools
- 下载GLTools源文件:
git clone https://github.com/HazimGazov/GLTool.git
- 进入GLTools目录:
cd GLTool
- 运行CMake来生成Makefile:
cmake -G "Unix Makefiles"
- 编译GLTools:
make
- 安装GLTools:
sudo make install
配置Xcode
-
打开Xcode,创建一个新的Command-Line项目。
-
在项目设置中,将目标设备设置为“Apple Silicon (arm64)”。
-
在“Build Settings”中,将“Architectures”设置为“arm64”。
-
在“Header Search Paths”中,添加以下路径:
/usr/local/include
/opt/local/include
- 在“Library Search Paths”中,添加以下路径:
/usr/local/lib
/opt/local/lib
- 在“Other Linker Flags”中,添加以下标志:
-framework OpenGL
-lglfw3
-lglew
编写OpenGL程序
现在,您已经成功配置了OpenGL环境,可以开始编写OpenGL程序了。以下是一个简单的示例,展示如何使用OpenGL绘制一个三角形:
#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
using namespace std;
int main() {
// 初始化GLFW
glfwInit();
// 创建一个窗口
GLFWwindow* window = glfwCreateWindow(800, 600, "OpenGL三角形", NULL, NULL);
// 检查窗口是否创建成功
if (window == NULL) {
cout << "无法创建窗口!" << endl;
glfwTerminate();
return -1;
}
// 设置当前上下文
glfwMakeContextCurrent(window);
// 初始化GLEW
glewExperimental = true;
if (glewInit() != GLEW_OK) {
cout << "无法初始化GLEW!" << endl;
glfwTerminate();
return -1;
}
// 顶点着色器
const char* vertexShaderSource =
"#version 330 core\n"
"layout (location = 0) in vec3 aPos;\n"
"void main() {\n"
" gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
"}\n";
// 片段着色器
const char* fragmentShaderSource =
"#version 330 core\n"
"out vec4 FragColor;\n"
"void main() {\n"
" FragColor = vec4(1.0f, 0.0f, 0.0f, 1.0f);\n"
"}\n";
// 编译着色器
GLuint vertexShader = glCreateShader(GL_VERTEX_SHADER);
glShaderSource(vertexShader, 1, &vertexShaderSource, NULL);
glCompileShader(vertexShader);
GLuint fragmentShader = glCreateShader(GL_FRAGMENT_SHADER);
glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL);
glCompileShader(fragmentShader);
// 创建着色器程序
GLuint shaderProgram = glCreateProgram();
glAttachShader(shaderProgram, vertexShader);
glAttachShader(shaderProgram, fragmentShader);
glLinkProgram(shaderProgram);
// 检查着色器程序是否链接成功
GLint success;
glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success);
if (!success) {
cout << "无法链接着色器程序!" << endl;
glfwTerminate();
return -1;
}
// 使用着色器程序
glUseProgram(shaderProgram);
// 定义顶点数据
GLfloat vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
// 创建顶点缓冲对象
GLuint VBO;
glGenBuffers(1, &VBO);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
// 创建顶点数组对象
GLuint VAO;
glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);
// 配置顶点属性
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(GLfloat), (void*)0);
glEnableVertexAttribArray(0);
// 渲染循环
while (!glfwWindowShouldClose(window)) {
// 清除颜色缓冲
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 绘制三角形
glDrawArrays(GL_TRIANGLES, 0, 3);
// 交换前后缓冲区
glfwSwapBuffers(window);
// 处理事件
glfwPollEvents();
}
// 释放资源
glDeleteVertexArrays(1, &VAO);
glDeleteBuffers(1, &VBO);
glDeleteProgram(shaderProgram);
glDeleteShader(fragmentShader);
glDeleteShader(vertexShader);
// 终止GLFW
glfwTerminate();
return 0;
}
将以上代码保存为main.cpp,并使用Xcode编译运行,您将看到一个绘制在窗口中的红色三角形。
结语
在本文中,我们介绍了如何在M1 MacOS系统上使用Xcode配置OpenGL环境,并提供了一个简单的OpenGL程序示例。如果您对OpenGL开发感兴趣,可以进一步探索相关文档和教程,并创建更复杂、更有趣的OpenGL应用程序。