准备环境
-
Mac
macOS Monterey 12.x,intel处理器,x86_64架构
- VSCode
插件 C/C++和Code Runner - Xcode
AppStore最新版本即可 - GLFW
GLFW是一个免费的、开源的、多平台的OpenGL、OpenGL ES和Vulkan应用程序开发库。它提供了一个简单的、平台独立的API,用于创建窗口、上下文和界面、读取输入、处理事件等。
打开官网点击Download,下载Mac版编译好的library;
编码
项目目录
将下载好的glfw3.h、glfw3native.h、libglfw3.a放到相应目录下
代码
测试代码如下
#include <GLFW/glfw3.h>
#include <iostream>
using namespace std;
int main(void)
{
GLFWwindow* window;
/* Initialize the library */
if (!glfwInit())
return -1;
/* Create a windowed mode window and its OpenGL context */
window = glfwCreateWindow(640, 480, "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);
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
glfwTerminate();
return 0;
}
启动
按F5,选择clang++的启动方式
tasks.json的配置如下
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang++ 生成活动文件",
"command": "/usr/bin/clang++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"${fileDirname}/depends/libglfw3.a", // 指定glfw包
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"--include-directory=${fileDirname}/depends/include", // 指定目录
"-framework", "Cocoa", "-framework", "OpenGL", "-framework", "IOKit", "-framework", "CoreVideo" // 引入iOS框架
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
启动效果
出现如下效果,openGL的window已经创建完毕,表示成功了~
我们尝试着画一个三角形,在这里加入如下代码
while (!glfwWindowShouldClose(window))
{
/* Render here */
glClear(GL_COLOR_BUFFER_BIT);
// new code
glBegin(GL_TRIANGLES);
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, -0.5f);
glEnd();
/* Swap front and back buffers */
glfwSwapBuffers(window);
/* Poll for and process events */
glfwPollEvents();
}
F5运行,awesome~
GLEW
不同的显卡公司,也会发布一些只有自家显卡才支 持的扩展函数,你要想用这数涵数,不得不去寻找最新的glext.h,有了GLEW扩展库,你就再也不用为找不到函数的接口而烦恼,因为GLEW能自动识别你的平台所支持的全部OpenGL高级扩展函数。也就是说,只要包含一个glew.h头文件,你就能使用gl,glu,glext,wgl,glx的全部函数。
下载
brew install glew
引入
下载好后在/usr/local/Cellar/中找到所需要的静态库然后新增如下代码
F5运行
awesome~