c++ opengl 三维图形中显示文字_Mac OSX系统下使用OpenGL

85777fed63b856b873c7453bcf32d3eb.png

在osx中,OpenGL库在系统中已经自带了,要想查看当前系统中的OpenGL库的版本,可以在App Store中安装OpenGL Extensions Viewer

0cb54ca725197726757dbccbf789ca95.png

安装第三方包

依赖工具:homebrew,cmake。

这两个工具的具体安装方式网上有很多,google一下很容易找到。

  • GLFW

GLFW是一个小型的C库,它可以让你创建和管理窗口、OpenGL和OpenGL ES上下文和Vulkan表面,枚举显示器和视频模式,以及处理键盘、鼠标、操纵杆、剪贴板和时间等输入。

GLFW主要针对那些唯一的图形输出是通过OpenGL、OpenGL ES或Vulkan的应用程序,提供了一个简单的、多平台的抽象层。因此GLFW在开发多平台OpenGL应用时非常有用,但单平台开发者也可以从避免处理笨拙的平台特定API中获益。

像GLFW这样的库非常有用,因为OpenGL和OpenGL ES本身并没有提供任何机制来创建必要的上下文、管理窗口、用户输入、定时等。正如OpenGL 3.1规范(第2章,第1段)所述。

OpenGL只涉及渲染到帧缓冲区(以及读取存储在该帧缓冲区中的值)。不支持有时与图形硬件相关的其他外设,如鼠标和键盘。程序员必须依靠其他机制来获取用户输入。

安装命令:

bash brew install glfw3

  • GLEW

OpenGL Extension Wrangler Library(GLEW)是一个跨平台的开源C/C++扩展加载库。GLEW提供了高效的运行时机制,用于确定目标平台上支持哪些OpenGL扩展。OpenGL核心和扩展功能在一个头文件中暴露出来。GLEW已经在各种操作系统上进行了测试,包括Windows、Linux、Mac OS X、FreeBSD、Irix和Solaris。

安装命令:

bash brew install glew

上面是用包管理器来安装。需要依赖工具homebrew和编译工具cmake,如果没有安装这两个工具,可以google一下安装方式来安装一下。

第一个Hello World

网上很多教程到这里后,就会教你配置vs studio或者xcode,由于我本人的习惯问题,很少使用这些ide,所以这里我还是基于cmake编译工具来写第一个hello world程序。主要目的是熟悉配置include和lib目录。

新建一个文件夹,比如叫test_opengl,目录中新建一个main.cpp,添加如下代码:

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
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 */
        /* Swap front and back buffers */
        glfwSwapBuffers(window);
        /* Poll for and process events */
        glfwPollEvents();
    }

    glfwTerminate();
    return 0;
}

保存后,在新建一个CMakeLists.txt文件。这个文件是cmake使用的,用于指定编译时的目录、链接的库、以及编译选项等。对于本项目,添加简单的如下内容:

cmake_minimum_required(VERSION 2.8)
project(test_opengl)

set(CMAKE_VERBOSE_MAKEFILE OFF)

# glfw和glew的头文件目录,这是我的路径,你可以换成你自己的
include_directories(/usr/local/include)
aux_source_directory("./" SRCS)

set(CMAKE_CXX_FLAGS "-g -std=c++11 -Wformat")

# glew的库目录路径
link_directories(/usr/local/Cellar/glew/2.1.0/lib)
# glfw的库目录路径
link_directories(/usr/local/Cellar/glfw/3.3/lib)
add_executable(test_opengl ${SRCS} ${HDRS})

# 指定glew库
target_link_libraries(test_opengl GLEW)
# 指定glfw库
target_link_libraries(test_opengl GLFW)

编写完之后,在main.cpp同级目录下建立一个build目录,然后

cd build
cmake ..
make

然后测试是否能编译成功。如果编译成功,会出现一个test_opengl 可执行程序,然后运行:

./test_opengl

这时会看到一个hello world的窗口。

至此,你已经利用OpenGL编写了第一个程序。恭喜,你已经入门了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值