文章目录
ubuntu中安装opengl核心环境
可执行如下命令进行整体安装:
sudo apt-get install libgl1-mesa-dev*
或者单独安装
1、提供编译程序必须软件包的列表信息
sudo apt-get install build-essential
2、安装OpenGL Library
sudo apt-get install libgl1-mesa-dev
3、安装OpenGL Utilities
sudo apt-get install libglu1-mesa-dev
sudo apt-get install libegl1-mesa-dev
————————————————
版权声明:本文为CSDN博主「leon1741」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LEON1741/article/details/81411382
安装glfw
直接命令二进制安装
sudo apt-get install libglfw3-dev
安装glad
配置、下载和安装GLAD打开这个网站
在配置选项之前,需要知道你自己计算机上的OpenGL是什么版本的。这里可以使用如下的命令来查看对应显卡的OpenGL版本:
glxinfo | grep -i opengl
glxinfo
命令支持的安装包
sudo apt install mesa-utils
————————————————
版权声明:本文为CSDN博主「小强的机器人工坊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/l1216766050/article/details/102787618
载下来后,右键点击glad.zip选择提取到此处即可解压。
cd glad/include
sudo mv glad/ /usr/local/include #将glad目录移动到/usr/local/include
sudo mv KHR/ /usr/local/include #将KHR目录移动到/usr/local/include
最后将glad/src目录下的glad.c文件拷贝一份到你的工程源码目录下,如跟main.cpp文件在同一个目录下。
————————————————
版权声明:本文为CSDN博主「小强的机器人工坊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/l1216766050/article/details/102787618
测试验证程序
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 14)
project(GLFW_test)
find_package(glfw3 REQUIRED)
file(GLOB project_file glad.c main.cpp)
add_executable(${PROJECT_NAME} ${project_file})
target_link_libraries(${PROJECT_NAME}
-lglfw
-lGL
-lm
-lXrandr
-lX11
-lpthread
-ldl
)
main.cpp
// System Headers
#include <glad/glad.h>
#include <GLFW/glfw3.h>
// Standard Headers
#include <cstdio>
#include <cstdlib>
#include <iostream>
void framebuffer_size_callback(GLFWwindow *window, int width, int height);//回调函数原型声明
void processInput(GLFWwindow *window);
// settings
const unsigned int SCR_WIDTH = 800;
const unsigned int SCR_HEIGHT = 600;
int main() {
//初始化GLFW
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//创建一个窗口对象
GLFWwindow *window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "GLFW 3.3.1", NULL, NULL);
if (window == NULL) {
std::cout << "Failed to create GLFW window" << std::endl;
glfwTerminate();
return -1;
}
//通知GLFW将我们窗口的上下文设置为当前线程的主上下文
glfwMakeContextCurrent(window);
//对窗口注册一个回调函数,每当窗口改变大小,GLFW会调用这个函数并填充相应的参数供你处理
glfwSetFramebufferSizeCallback(window, framebuffer_size_callback);
//初始化GLAD用来管理OpenGL的函数指针
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
std::cout << "Failed to initialize GLAD" << std::endl;
return -1;
}
//渲染循环
while(!glfwWindowShouldClose(window)) {
// 输入
processInput(window);
// 渲染指令
glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
// 检查并调用事件,交换缓冲
glfwSwapBuffers(window);//检查触发事件
glfwPollEvents(); //交换颜色缓冲
}
//释放/删除之前的分配的所有资源
glfwTerminate();
return EXIT_SUCCESS;
}
//输入控制,检查用户是否按下了返回键(Esc)
void processInput(GLFWwindow *window) {
if(glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) {
glfwSetWindowShouldClose(window, true);
}
}
// 当用户改变窗口的大小的时候,视口也应该被调整
void framebuffer_size_callback(GLFWwindow *window, int width, int height) {
// 注意:对于视网膜(Retina)显示屏,width和height都会明显比原输入值更高一点。
glViewport(0, 0, width, height);
}
vscode的task.json配置如下
关键是task.json,需要修改“args”。
在args加入:
“glad.c”,“-lGL”,“-lGLU”,“-lglut”,“-ldl”,
“-lGLEW”, “-lglfw”, “-lGL”,“-lX11”, “-lpthread”,“-lXrandr”
我的理解:
“glad.c”将glad.c引入。
“-lGL”,“-lGLU”,"-lglut"是glut的。
"-ldl"是动态链接库一定要有,不然会报DSO missing from command line。
“-lglfw"才是glfw3的,而不是”-lglfw3"
————————————————
版权声明:本文为CSDN博主「破晓夕阳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yumi1214/article/details/121428635
cat .vscode/tasks.jso
{
"version": "2.0.0",
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++ 生成活动文件",
"command": "/usr/bin/g++",
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"glad.c",
"-lGL",
"-ldl",
"-lglfw",
"-lpthread",
"-lm"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "编译器: /usr/bin/g++"
}
]
}
lunch.json文件不用修改,正常生成就行
note
依照参考文章,有几个注意点:
- 安装opengl驱动时,一开始运行
sudo apt-get install libgl1-mesa-dev*
时,报错E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关
,说是依赖关系,不能安装什么,这个问题在经过一系列的源更新之后,再次运行,居然可以使用了,更换的是阿里云的源,参考手摸手教程之ubuntu20.04更改国内镜像源(附其他版本ubuntu换源教程,最新详细教程) - 查看计算机上opengl的版本,这里需要注意,在不同的系统上,好像是有区别的,最起码wsl中的ubuntu和直接的ubuntu系统不太一样
- libglfw3-dev可以直接使用命令安装
- 头文件
#include <glad/glad.h>
和#include <GLFW/glfw3.h>
要放在代码最前端,否则会报错