1.Ubuntu Desktop 实践 13、在 Linux 中写 OpenGL 程序——使用 Visual Studio Code(上)
2.苹果电脑装Linux有显卡驱动了,首次兼容OpenGL ES标准,网友:逆向工程巨佬
3.qt5在linux下会默认带有-lgl链接参数,即使没有使用openg
4.å¦ä½å¨Linuxä¸ä½¿ç¨OpenGL+ C++å¼å
Ubuntu Desktop 实践 13、在 Linux 中写 OpenGL 程序——使用 Visual Studio Code(上)
在 Linux 下编写 OpenGL 程序,成为了 C/C++ 语言在计算机图形学应用中的android名片扫描源码重要途径。这一领域虽然有 Vulkan 的出现,但 OpenGL 在计算机图形学的入门学习中仍然具有优势。本文将介绍如何在 Ubuntu Desktop 环境中搭建 OpenGL 开发环境,并使用 Visual Studio Code 进行程序开发。
要学习 OpenGL,首选语言是 C/C++。在 Ubuntu 中,通过安装 build-essential 包即可迅速搭建起 C/C++ 开发环境。推荐使用 GLFW 库来简化 OpenGL 程序的框架构建,同时提供跨平台功能。补码10111的源码GLEW 扩展库则自动识别平台支持的 OpenGL 高级扩展函数,大大方便了开发过程。GLM 数学库能提供便捷的向量和矩阵运算支持,而 Assimp 库则用于加载 3D 模型,stb_image.h 读取库则用于处理图像文件。这些库的安装,使用 sudo apt install 命令即可一键完成,相比 Windows 环境更为便捷。
在开发工具上,本文推荐使用 Visual Studio Code。通过下载并安装 Visual Studio Code,我们能更加高效地编写和管理 OpenGL 程序。在项目目录下,我们可以按模块化方式进行组织,如创建 -FirstStep 目录用于初始化程序,社区聊天源码编写 FirstStep.cpp 文件作为第一个 OpenGL 程序。通过 C/C++ Extension Pack 扩展,Visual Studio Code 提供了便捷的编译和运行功能,使整个开发流程更为流畅。
对于程序框架的进一步优化,可以通过封装成 App 类来实现。这样不仅使代码结构更清晰,还能方便地添加输入输出功能,如鼠标键盘操作。通过继承 App 类,简化了新程序的构建。通过 init() 和 display() 方法,能够控制初始化和渲染流程,使程序运行更高效。
本文介绍了在 Ubuntu Desktop 环境下搭建 OpenGL 开发环境的聚源码坯机步骤,以及如何利用 Visual Studio Code 进行程序开发和优化。通过本文的介绍,读者可以快速上手,搭建自己的 OpenGL 程序。
苹果电脑装Linux有显卡驱动了,首次兼容OpenGL ES标准,网友:逆向工程巨佬
Asahi Linux项目取得重大突破,首次为苹果M1/M2芯片开发出符合OpenGL ES 3.1标准的GPU驱动,这一成果出自两位程序员之手,打破了苹果自身不兼容开放GPU标准的局限。这个开源项目由Hector Martin发起,目标是将Linux移植到Apple Silicon设备上,其进展早在去年3月就已引起关注。
Asahi Linux在年1月启动项目后,成功实现了在M1芯片上运行Linux,资源视频解析源码并且操作简便。现在,他们发布了首个支持M1系列芯片,包括M1 Pro/Max/Ultra、M2和M2 Pro/Max的OpenGL ES驱动,但前提是在Linux系统环境下。用户可以通过升级系统命令获取这一驱动,目前正接受Khronos Group的审查。
这一成果对游戏行业和开发者来说是一个重要信号,引发网友热议。有人猜测苹果可能会考虑改善对OpenGL和Vulkan等标准的支持,甚至可能被苹果挖角。但也有人认为,鉴于Metal在游戏开发者中的受欢迎程度,苹果可能会坚持其自家标准。
总之,Asahi Linux的成就引发了关于苹果未来技术路线的讨论,是否会选择兼容更多标准,还是继续推动自家标准,这将决定行业的技术走向。不论如何,Asahi Linux的逆向工程能力无疑得到了业界的认可。
qt5在linux下会默认带有-lgl链接参数,即使没有使用openg
参考上文,针对Qt5在Linux下默认带有-lgl链接参数的问题,我们可以通过以下步骤来解决。
首先,你的Qt工程基于MakeFile,经历QMake后执行Make。
通过修改.pro文件,实际上仅是通过QMake工具调整了MakeFile生成过程。因此,直接查看生成的MakeFile文件,关注参数。
了解后得知,Ubuntu系统中缺少lgl或你不想使用lgl,但Qt仍然为你链接了lgl。
直接删除MakeFile中的-lGL参数,重新执行make clean,再进行make。
使用ldd XXXX命令(其中XXXX为你make的输出文件)查看已链接的库。你会发现仍然使用了libGL。
原因在于,虽然没有明确指示Qt使用OpenGL,但Qt在绘制窗口时默认使用OpenGL。只要有QT+= gui,并绘制窗口,就会用到-lGL。
若希望Qt不使用OpenGL,可进入Qt源码目录,使用./configure -no-opengl编译一个不支持OpenGL的Qt版本。这将使Qt绘制窗口时无需OpenGL支持。
尝试上述步骤后,如仍有问题,请告知。我自己也有类似需求,现尝试解答。
首先运行OpenGL ES2.0程序,查看Makefile的LIBS。
LIBS = $(SUBLIBS) -L/home/hydro/Qt/Qt5..1/5..1/gcc_/lib -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
使用ldd命令,发现已链接libGL模块。
删除-lGL参数,执行make clean,再make,重新查看ldd。
尽管删除-lGL,但libGL仍存在于链接模块中。
尝试新建一个QWindow工程,再次使用ldd检查,验证任何包含窗口的程序都会加载libGL。
按照上述步骤调整Qt配置:进入Qt源码目录,使用./configure -opengl es2,再make,最后make install。
安装完成后,将配置应用至工程,重新运行。查看Makefile。
LIBS = $(SUBLIBS) -L/usr/local/Qt-5..1/lib -lQt5Widgets -lQt5Gui -lQt5Core -lGLESv2 -lpthread
成功!
再次使用ldd检查,结果令人满意。
å¦ä½å¨Linuxä¸ä½¿ç¨OpenGL+ C++å¼å
åææ¯ï¼1.é 置好äºUbuntuä¸çc++ç¯å¢ï¼gcc以åg++å¯ç¨ã
2.使ç¨eclipse for c+åOpenGLå¼å
ããæ¥éª¤ä¸ï¼
å¨ubuntuç»ç«¯ä¸è¿è¡ä»¥ä¸å½ä»¤ï¼å®è£ openglæéè¦çåºæ件
$ sudo apt-get install build-essential
$ sudo apt-get install freeglut3-dev
ããæ¥éª¤äºï¼
ããè¿è¡ä¸ä¸openglå®ä¾ï¼æµè¯é ç½®çç¯å¢æ¯å¦å®è£ æå
å¨eclipseä¸æ°å»ºä¸ä¸ªå·¥ç¨æ件ï¼å设æ们å½å为Testï¼å¨å·¥ç¨Testéé¢æ°å»ºä¸ä¸ªC++æºä»£ç æ件ï¼è¿éæ们æå®å½å为main.cppï¼å¨main.cppæ件ä¸æå ¥ä¸ä¸ä»£ç
#include <GL/glut.h>ããvoid init();
void display();
ããint main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB |GLUT_SINGLE);
glutInitWindowPosition(0, 0);
glutInitWindowSize(, );
ããglutCreateWindow("OpenGL 3D View");
ããinit();
glutDisplayFunc(display);
ããglutMainLoop();
return 0;
}
ããvoid init()
{
glClearColor(0.0, 0.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
glOrtho(-5, 5, -5, 5, 5, );
glMatrixMode(GL_MODELVIEW);
gluLookAt(0, 0, , 0, 0, 0, 0, 1, 0);
}
ããvoid display()
{
glClear(GL_COLOR_BUFFER_BIT);
ããglColor3f(1.0, 0, 0);
glutWireTeapot(3);
ããglFlush();
}
å³å»å·¥ç¨æ件å
Test->ç¹å»å±æ§ï¼Propertiesï¼->C/C++Bulid->Settings->GCC C++Linker->Libraries,
å¨è¿ä¸ªçªå£ä¸æ·»å å 个个åºï¼
åå«ä¸ºGLU,glut,GLï¼
ç¹å»OKã
å¦æè¿æ³ä½¿ç¨opencvï¼
å¨è¿éè¿å å ¥cv,cxcore,highguiçåºæ件ï¼
æ ¹æ®èªå·±çéè¦æ¥å®
åæ¶å¨GCC Cï¼ï¼ Compiler->Includesä¸çincudepathä¸æ·»å è·¯å¾/usr/include/GL
å¦æè¿æ³ä½¿ç¨opencvä¸çåºï¼é£ä¹å å ¥opencvçè·¯å¾ï¼ä¸è¬æ¯/usr/include/opencv
ããè¿è¡ä»¥ä¸ç¨åºï¼ä¼æ¾ç¤ºä¸ä¸ªè¶å£¶å½¢ç¶çopenglè¿è¡ç»æ