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

  • Post author:
  • Post category:其他




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



查看Ubuntu的显卡版本信息

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

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

在这里插入图片描述

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

在这里插入图片描述

  1. 获得显卡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”,一般?有例外吗?当然,特殊情况特殊分析。

在这里插入图片描述



运行结果

在这里插入图片描述



版权声明:本文为weixin_46457532原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。