业务范围

Ubuntu20.04 配置OpenGL开发环境(并验证)

发布日期:2024-10-14 09:17    点击次数:118
查看Ubuntu的显卡版本信息

这一步可以查看我们手上的“树莓派”搭载的乌班图系统的显卡版本,并且它对OpenGL的支持信息。

首先安装“glxinfo”命令,这个命令可以查看很多与显卡、OpenGL相关的信息。
sudo apt install mesa-utils

图片

然后使用命令查看显卡是否安装成功(一般默认都有),打印“yes”代表显卡安装成功。
glxinfo | grep rendering

图片

获得显卡OpenGL版本信息。
glxinfo | grep OpenGL

图片

上面OpenGL version string: 3.1 Mesa 21.2.6可以看出OpenGL的版本为3.1 安装依赖库

四个命令 依次运行(第一个命令是更新一下我们的库)

sudo apt-get update
yes|sudo apt-get install build-essential 
yes|sudo apt-get install libgl1-mesa-dev
yes|sudo apt-get install libglu1-mesa-dev 
yes|sudo apt-get install freeglut3-dev

遇到的问题

如果有那么简单就好了 ,现实世界是复杂的,简简单单安装库就遇到了很多问题

不管“y"还是”n“ 都提示“中止”

可能会好奇,为什么我要在四行命令前,加一个”yes|“?因为我们在安装时,总会提示你确认进行安装,“Y/n”,我们一般需要手动输入”y”,而加了命令”yes|"后,它会自动帮你输入“y”,你全程不需要动手。 其实这样做并不是起源于我想偷懒,开始我在执行第二个命令(没有加yes|)

sudo apt-get install libgl1-mesa-dev

不管我手动输入“y”还是“n”,它都会提示'中止’,这就奇了怪了。网上建议是加“yes|”,这确实解决了问题,也更方便一点。

安装包失败,提示“404 not found”

除了第一行命令,这三个代码都会提示,“有xxx包没找到 404 not found”

yes|sudo apt-get install libgl1-mesa-dev
yes|sudo apt-get install libglu1-mesa-dev 
yes|sudo apt-get install freeglut3-dev

刨根问底,我根据它提供的地址(因为我是中科大ustc的镜像源),去找到对应的deb包,一看,果然是包的名字不对,但是我们要怎么去改呢?

图片

首先想到的就是更新镜像源

sudo apt-get update

但是 在更新的过程中,它竟然也有很多“404 not found”,这就让我觉得我的源有问题。 所以,一般这个时候网上就会建议你换源,比如换清华源等等,但是这样似乎有些麻烦了(我没有尝试)。 我看到了一篇博客,他说他尝试换源也没有用,他首先是是查看了自己的架构,得到结果是“arm64”(我也一样)

sudo dpkg  --print-architecture //查看架构

于是,他进入设置镜像源的文本中进行修改(这里你可以用vim 也可以是nano 或者其他的)

sudo vim /etc/apt/sources.list

在对应的语句前 各插入一句“[arch=arm64]”

图片

保存后退出。

再这之后,我们执行sudo apt-get update,果然没有404的错误。把那三条命令一一运行,也没有出现404的错误。

补充说明

如果那四行代码你没有成功运行(报404),你写代码的头文件,它会告诉你找不到该文件,你右击也转不到该文件(VsCode里右击 “转到定义”)

#include <GL/glut.h>

在我们修改后,你就可以成功右击,转到定义后看见对应的文件。

运行测试代码进行验证

代码网上很多,太多了。这边随手贴一个

#include <GL/glut.h>

void init(void)
{
    glClearColor(0.0, 0.0, 0.0, 0.0);
    glMatrixMode(GL_PROJECTION);
    glOrtho(-5, 5, -5, 5, 5, 15);
    glMatrixMode(GL_MODELVIEW);
    gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);

    return;
}

void display(void)
{
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0, 0);
    glutWireTeapot(3);
    glFlush();

    return;
}

int main(int argc, char *argv[])
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
    glutInitWindowPosition(0, 0);
    glutInitWindowSize(300, 300);
    glutCreateWindow("OpenGL 3D View");
    init();
    glutDisplayFunc(display);
    glutMainLoop();

    return 0;
}

图片

在终端输入

g++ opTest.cpp -o  test  -lGL -lGLU -lglut
~~~~~~~~
./test

这个代码再解释一下吧,因为相信有很多和我一样的小白,建议小白自己再搜搜其他人对ubuntu编译的讲解。 使用g++ 命令,对 opTest.cpp文件进行编译,生成一个叫“test”的执行文件test(会生成至于cpp同一文件夹),-lGL其实是两个部分,“-l”(是L的小写,不是1,也不是i的大写)是说明要寻找第三方库(因为我这里用到GL库),“GL”代表库的名字,这些库一般的路径为“usr/lib/xxxx”,一般?有例外吗?当然,特殊情况特殊分析。

图片

运行结果

图片

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。

上一篇:【周一足坛焦点战】黑山VS威尔士:欧国联烽火再起,谁能笑傲巴尔干之夜?
下一篇:基于jenkins docker实现CI/CD实践