0、打开OpenGL驱动

sudo raspi-config
//打开Advanced Options→GL Driver,选择第一GL (Full KMS) Desktop Drivers或第二选项GL (Fake KMS) Desktop Driver

或者直接在/boot/config.txt里添加一行dtoverlay=vc4-kms-v3d或dtoverlay=vc4-fkms-v3d,分别对应上面两项。

KMS是指Kernel Mode-Setting,理论上该模式会更有效率,因为是通过内核输出的,而Fake KMS则有更好的兼容性,比如打开Full KMS后使用realvnc远程会黑屏等。

sudo apt install mesa-utils
glxinfo
glxinfo | grep rendering
输出Yes表示驱动打开

glxinfo | grep OpenGL
输出相应的OpenGL的版本

glxgears
测试相应的帧率

1、测试C++17

hello.cpp

#include <iostream>

int main ()
{
  std::cout << "Hello, world!\n";
  return 0;
}

gcc 编译
g++ -Wall -std=c++17 hello.cpp -o hello_gcc

clang 编译
clang++ -Wall -std=c++17  hello.cpp -o hello_clang

file.cpp

#include <iostream>
#include <filesystem>
 
int main() {
    for(auto &file : std::filesystem::recursive_directory_iterator("./")) {
        std::cout << file.path() << '\n';
    }
}

gcc 编译
g++ -Wall -std=c++17 file.cpp -o file_gcc

g++ -Wall -Wno-deprecated-declarations -std=c++17 file.cpp -o file_gcc


clang 编译
clang++ -Wall -std=c++17  file.cpp -o file_clang

2、机器码

clang++ -Wall -std=c++17  file.cpp -S -g -o file_clang
vim file_clang 即查看机器码

3、测试编译C++20

span_test.cpp

// C++20 span test
// you can build the code with:
// clang++ -std=c++2a -stdlib=libc++ -Wall -Wextra -pedantic span_test.cpp -o span_test

#include <iostream>
#include <vector>
#include <span>

void print_content(std::span<int> container) {
    for(const auto &e : container) {
        std::cout << e << ' ';
    }
     std::cout << '\n';
 }
 
int main() {
    int a[]{23, 45, 67, 89};
    print_content(a);

    std::vector<int> v{1, 2, 3, 4, 5};
    print_content(v);
}

clang++ -std=c++2a -stdlib=libc++ -Wall -Wextra -pedantic span_test.cpp -o span_test

4、OpenGL安装和测试

Ubuntu系统

x11安装

sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev libxmu-dev libxmuu-dev

OpenGL 安装

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


Centos系统

x11库:

yum install libXt-devel

OpenGL 安装

yum install mesa-libGL-devel  mesa-libGLU-devel

测试一下:

sudo apt-get install mesa-utils
glxinfo | grep rendering
glxinfo | grep OpenGL

参考:https://dri.freedesktop.org/wiki/glxinfo/#index1h3