1.CMake搭建OpenGL开发环境
2.OpenGL中gltranslate()的源码函数代码,我会用这个函数,下载我要的源码是这个函数的实现代码
3.C语言如何用OpenGL
4.opengl-01:源码编译
5.OpenCL安装过程记录
CMake搭建OpenGL开发环境
在Ubuntu.环境中搭建OpenGL开发环境,主要采用GLFW和GLAD。下载
首先,源码编译GLFW,下载图片文字化源码遵循GLFW官网提供的源码编译指南,利用CMake进行编译。下载
Ubuntu用户可以直接安装libglfw3-dev依赖。源码
确认所使用的下载环境为X系统,并安装相应依赖。源码
访问GLAD官网,下载下载zip压缩包,源码解压后将include文件夹移动到/usr/local/include目录,下载天玑720源码并将glad.c文件放置在工程目录中。源码
创建测试工程,包含CMakeLists.txt文件和main.cpp。
欲深入了解OpenGL,可参考LearnOpenGL CN主页。
加入glm库,获取链接:github.com/g-truc/glm。
步骤如下:直接将glm源码下载到thirdparty目录;
修改CMakeLists.txt文件,加入相关配置。
调整顶点着色器,添加模型常量句柄,以便与shader program链接。
使用glm库旋转度,mybatis的设计源码实现特定效果。
最终结果如下所示。
OpenGL中gltranslate()的函数代码,我会用这个函数,我要的是这个函数的实现代码
是这样的,你电脑上OpenGL的实现代码其实是不可能看到的,它是跟着显卡走的,应该在显卡驱动程序里(或许是用汇编实现的),这是我的认识。但并不是没有办法了,Mesa一直以开源的形式实现了OpenGL的一些接口,我们可以拿来学习和参考,比如你说的北京云控源码这个translate接口,其实就是一个模型矩阵运算问题,我摘抄了Mesa的m_matrix.c文件里的实现:
void _math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z ){
GLfloat *m = mat->m;
m[] = m[0] * x + m[4] * y + m[8] * z + m[];
m[] = m[1] * x + m[5] * y + m[9] * z + m[];
m[] = m[2] * x + m[6] * y + m[] * z + m[];
m[] = m[3] * x + m[7] * y + m[] * z + m[];
mat->flags |= (MAT_FLAG_TRANSLATION |
MAT_DIRTY_TYPE |
MAT_DIRTY_INVERSE);
}
Mesa的网址是www.mesa3d.org,你可以去down代码。
C语言如何用OpenGL
OpenGL就是基于C语言的,只需要下载OpenGL的SDK库安装即可,在编写源码时:
1、添加头文件glut.h。
注意glut.h文件中已经包含gl.h,glu.h在实际编译中可以只加入头文件glut.h,很多相关的例子都是这样的,但是在mingwstudio上编译发现,在glut.h前还是需要加入glu.h, gl.h.如:
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
2、在工程中添加OpenGL的库,有关命令行加入,瀑布图指标源码glu opengl glut库就可以编译了。
opengl-:源码编译
1 源码编译 + cmake + vscode
系统环境:ubuntu ..6
编译环境: g++9.4 cmake3..3
编译工具:vscode
1.1 glfw源码编译
Release 3.3. · glfw/glfw 下载 glfw-3.3..zip
安装依赖
解压源码文件
cmake配置
编译工程 edgelee / vscode-opengl-tutorial -1-glfw
1.2 glad源码编译
glad.dav1d.de/ 选择配置内容(如图)
生成源文件 glad.zip
解压zip
cmake配置
一级CmakeList
二级CmakeList
编译工程 edgelee / vscode-opengl-tutorial -2-glad
1.3 imgui源码编译(依赖系统OpenGL)
imgui源码下载
github.com/ocornut/imgu...
ubuntu安装opengl
解压zip
cmake配置
一级CmakeList
二级CmakeList
根据makefile内容配置CmakeList(imgui-1..4/examples/example_glfw_opengl3/Makefile)
编译输出 edgelee / vscode-opengl-tutorial -3-imgui-(system-gl)
1.4 imgui源码编译(不依赖系统OpenGL)
imgui源码下载:同1.3
ubuntu安装opengl:不需要(即使安装,不使用)
解压zip:同1.3
cmake配置
一级CmakeList:同1.3
二级CmakeList:去掉OpenGL依赖
编译错误
根据错误提示,修正
imgui-1..4/backends/imgui_impl_glfw.cpp文件的添加
编译结果 edgelee / vscode-opengl-tutorial -3-imgui-(no-system-gl)
2 实例2.1 旋转三角形 glfw +glad
源码文件:glfw-3.3./examples/simple.c(不采用glfw自带glad,修改到自编译glad)
一级CmakeList
二级CmakeList
生成效果 edgelee / vscode-opengl-tutorial -sample-glfw-glad
2.2 gui界面 glfw +imgui
源码文件:imgui-1..4/examples/example_glfw_opengl3/main.cpp
一级CmakeList
二级CmakeList
生成效果 edgelee / vscode-opengl-tutorial -sample-glfw-imgui
2.3 gui界面 glfw +glda +imgui(建议方式)
注:建议采用此方式,openGL api 统一使用 gdal api
源码文件:imgui-1..4/examples/example_glfw_opengl3/main.cpp(修改到 gdal api)
一级CmakeList
二级CmakeList
生成效果 edgelee / vscode-opengl-tutorial -sample-glfw-glad-imgui
OpenCL安装过程记录
大创项目接近尾声,决定尝试学习和使用OpenCL进行开发。在搜索安装教程时,发现大多数资料针对的是CUDA Toolkit或直接提供文件复制方式,针对Linux系统的Khronos SDK教程则主要面向Windows用户。考虑到自己对编程基础的熟练程度,决定亲自完成安装过程并记录下来,以供后来者参考。
安装环境为Ubuntu . LTS(基于Linux 5.),使用GCC版本.3.0、CMake版本3..1。
首先,从Khronos官方获取OpenCL SDK源代码。理论上,可以使用Git进行克隆,但实际情况中遇到了GitHub网络不稳定的问题。建议在稳定网络环境下使用Git或通过第三方下载工具辅助下载源代码。同时,注意SDK将某些必需文件设置为子项目(如OpenCL-SDK/external/OpenCL-Headers),需要进入子项目手动下载。
在终端中切换到下载目录,并执行CMake。配置过程会自动检测并提示缺失的依赖项,尝试自动安装。在安装过程中,遇到了OpenGL、doxygen、X_X_LIB等依赖需要手动通过apt安装。
解决完依赖项后,理论上可进行编译。在终端中运行CMake并指定安装目录。编译完成后,OpenCL库被安装到电脑中。
接下来,配置可执行文件的依赖。在/etc/ld.so.conf.d目录下创建一个opencl.conf文件,写入安装目录下的动态库路径,如在/opt/OpenCL下,则动态库路径应为/opt/OpenCL/lib。使用Vim编辑器打开并保存文件。执行ldconfig命令以应用配置。
解决编译器问题。可以简单地将/opt/OpenCL/lib和/usr/include中的内容复制到相应目录,以避免手动指定链接库。更复杂的方法是修改gcc的specs文件,使编译器不再需要-lOpenCL选项。不过,这种方法较为繁琐,本文不作深入讨论。
通过符号链接解决编译器依赖问题。运行ln命令创建链接,使得编译器可以访问/usr/lib/CL/...,实际内容仍存储在/opt/OpenCL中。在编译时仍然需要添加-lOpenCL选项。
至此,OpenCL的安装配置已完成。尝试编写一段测试代码以验证环境是否正常工作。测试代码输出CL_DEVICE_EXTENSIONS中的内容,以了解设备的扩展支持情况,例如是否支持双精度浮点数(cl_khr_fp)。
总结代码示例及其编译选项,确保测试代码能够正确执行,验证OpenCL环境配置是否正确。至此,通过详细的步骤记录,为希望学习和使用OpenCL的开发者提供了清晰的安装和配置指南。