主要是针对openGL的一些初步的学习,因为openCV主要是处理图像视频,是从现有的得到数据,而openGL好像是从数据进行绘图,学习一下。在《计算机图形学编程》一书中,它把图形编程定性为着色器编程,相对于C/C++这种,就可谓是两种明线了,C/C++到了后期要进行编译器调优,估计图形编程也是如此,需要针对着色器,不过目前还是先学习其用。

这里的openGL(Open Graphics Library,开放图形库),说是平台无关的图形编程库,很多人现在都把它说成是一个标准,一个规范,我也不太确定。

窗口管理,GLFW

在openGL中,图像会渲染到一个帧缓冲区,然后再由机器负责绘制帧缓冲区的内容。能进行这种工作的有GLUT库、CPW库、GLOW库和GLUI库,但GLUT太老了,已经演变成freeglut。这里选择的是GLFW窗口管理库,需要编译安装。因为glfw都是编译安装的,所以还是先装个cmake,到官网直接下载msi来安装就行。

cmake下载路径

因为installer可以帮你添加环境变量,这样也懒得重启电脑了,现在是能不重启就不重启。安装好以后测试看看环境变量配好了没,cmake --version,能成功回应就ok。

然后下载glfw的编译安装包:

GLFW官网

从我找到的信息来看,很多openGL的库都是比较老的了,所以这也是为了学习而使用的,这个链接也不知道什么时候会失效,且用且珍惜吧。下载好以后就正常解压,然后进入对应glfw文件夹,进行编译安装。

打开cmake的GUI后,拖动GLFW的cmakelist到其中,然后configure一下,设置好自定义参数后,如果高亮就在configure一下,就开始generate;cmake的工作就到这一步,接下来是vs的工作了,到编译后文件下,vs打开GLFW.sln文件,然后批生成下勾选ALL BUILD和INSTALL的debug和release选项,一个是调试模式一个是发布模式,两种编译模式都选好以后就开始生成。到这一步,src下有对应的两种模式的lib即可。然后这里GLFW环境就算配置好了。

扩展库,GLEW

openGL中,有着基本功能和扩展机制,其中的扩展机制就是属于一个自定义内容了,用来支持新的功能。其实,这里针对的是openGL中的现代命令,这些命令的执行需要定量的代码,用扩展库来处理这些细节就成了标准做法。GLEW(OpenGL Extension Wrangler),openGL扩展牧马人,但除去这个还有备选,比如GL3W和GLAD,这些都可自动更新,但需要python支持。回归正题,GLEW需要从sourceforge上下载压缩包,得到对应glew32.lib和glew32.dll以及对应头文件。链接如下:

GLEW下载

实际上是官网,在上面有跳转到sourceforge的链接,auto select也是挺快的。不过这个版本更新也是绝了,07年,呵呵。

数学库,GLM

3D图形编程需要大量使用向量和矩阵代数(看来要复习了),一个配合常见数学计算任务的函数库和类包显得至关重要。常见的有Eigen和vmath,但这里使用的是数学库GLM(OpenGL Mathematics)。直接百度GLM安装,然后它就跳到sourceforge页面了,干脆在这里搞定吧,好,压缩包get。打开以后,居然是cmakelist包,不过glm下面也有对应hpp文件,所以暂时还是不做操作。

纹理图像加载库,SOIL2

SOIL2是图像加载库SOIL的更新分叉版本,这里的东西实在是太老旧了,不是学习的话好像都不想用它。这里就做详细点的记录吧。

首先是安装软件的premake4的下载安装

premake4下载页面

下载好以后就接着下载SOIL2项目文件,原本是github的习惯就是发布文件放release嘛,它倒好,直接有链接没东西,好吧,git clone吧。

clone完毕后,把premake5.exe可运行文件解压到此文件夹,然后右键打开命令行,输入./premake5.exe vs2022,因为我没有为premake配置环境变量,所以这样的方式进行,而且我的vs版本是2022,完了后可以看到以下内容:

PS D:\source code\SOIL2-master> ./premake5.exe vs2022
Building configurations...
Running action 'vs2022'...
Generated make/windows/SOIL2.sln...
Generated make/windows/soil2-static-lib.vcxproj...
Generated make/windows/soil2-shared-lib.vcxproj...
Generated make/windows/soil2-test.vcxproj...
Generated make/windows/soil2-test.vcxproj.filters...
Generated make/windows/soil2-perf-test.vcxproj...
Generated make/windows/soil2-perf-test.vcxproj.filters...
Done (74ms).
PS D:\source code\SOIL2-master>

然后又是vs的时间了,在下面路径vs打开sln文件

然后右键选中soil2-static-lib选项,右键生成,就可以得到lib文件了。

目前主要使用的就是src下SOIL2文件夹里面的头文件和新生成的soil2-debug.lib库文件(新生成的lib文件夹下可寻)。

配置openGL库文件夹

其实就是为了方便vs,特地把上面的头文件和库文件都集中在一起,自定义一个专门目录新建一个include和lib文件夹。然后把上面对应的头文件夹给复制过去,还有库文件给复制过去就行。

include文件夹:GLFW文件夹、GL文件夹、glm文件夹、SOIL2文件夹;

lib文件夹:glfw3.lib、glew32.lib、soil2-debug.lib

还可以把GLFW的glew.dll文件放上面两个同级路径,然后就凑成了一个基本的openGL库结构。



不过我好像犯了个错误,在我实际操作vs进行小实验的时候,才发现,即使引入了上面的头文件,vs也一样无法识别到,简直是怪圈,那么垃圾的。没办法,只能根据各前人的经验,放vs对应的include和lib目录下了。

因为vs就算是自定义了安装目录,它也还是把一大堆东西放在c盘,这个没办法,和你的用户目录挂钩的。我找vs内置的include的办法就是直接输入#include,然后跟随软件提示输入头文件,再右键打开那个头文件的文件夹即可,路径就在那,也就好办了。

然后把我先前include文件夹下所有文件夹(GL、GLFW、glm、SOIL2)都给复制过去,还有lib下的也是,对应好路径关系就找得到的,还是比较简单的,我这里的vs2022对应的两个内置路径是:

C:\Program Files (x86)\Windows Kits\10\Include\10.0.22000.0\um
C:\Program Files (x86)\Windows Kits\10\Lib\10.0.22000.0\um\x64

嗯,还有动态库要配置,这个就直接放项目文件夹下就行,就一个glew.dll。

简单测试

#include <GL/glew.h>
#include <glfw/glfw3.h>
#include <iostream>
#pragma comment(lib, "glew32.lib")
#pragma comment(lib, "glfw3.lib")
//作为标准提供在windows SDK中,但需要引入
#pragma comment(lib, "opengl32.lib") using namespace std; //绘制window窗体内容
void display(GLFWwindow *window, double currentTime) {
//绘制红色背景
glClearColor(1.0, 0.0, 0.0, 1.0);
glClear(GL_COLOR_BUFFER_BIT);
} int main() { //初始化GLFW库
if (!glfwInit())
exit(EXIT_FAILURE); //创建GLFW窗口和相关openGL上下文,并指定机器主次版本兼容openGL4.3
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); //创建一个宽高都为600像素的标题为none的、后面两个参数设置全屏显示和资源共享,暂时用NULL参数替代
GLFWwindow *window = glfwCreateWindow(600, 600, "none", NULL, NULL);
//把windows对象和当前openGL上下文相关联
glfwMakeContextCurrent(window); //初始化GLEW库
if (glewInit() != GLEW_OK)
exit(EXIT_FAILURE);
//开启垂直同步
glfwSwapInterval(1); //简单的渲染循环
while (!glfwWindowShouldClose(window)) {
display(window, glfwGetTime());
//绘制屏幕
glfwSwapBuffers(window);
//等待事件的处理,比如按键点击退出
glfwPollEvents();
} //逐一操作以释放窗口对象
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}
//openGL上下文,openGL实例及状态信息等,包括颜色缓冲区等

因为已经提前把glew.dll放在项目路径下了,所以基本是没啥问题了的,运行结束就会出现一个红色窗口。

openGL库环境简单配置的更多相关文章

  1. VC 6中配置OpenGL开发环境

    2010,2012中配置类似 http://hi.baidu.com/yanzi52351/item/f9a600dffa4caa4ddcf9be1d VC 6中配置OpenGL开发环境 这里,我习惯 ...

  2. 配置自己的OpenGL库,glew、freeglut库编译,库冲突解决(附OpenGL Demo程序)

    平台:Windows7,Visual C++ 2010 1. 引言 实验室的一个项目,用到OpenGL进行实时绘制,还用到一些其他的库,一个困扰我很久的问题就是编译时遇到的各种符号未定义,符号重定义之 ...

  3. Fedora和Ubuntu下安装OpenGL开发环境配置

    Fedora下OpenGl开发环境配置 开发OpenGL工程需要3个库文件和对应的头文件: libglut.so,libGLU.so,libGL.so, gl.h ,glu.h, glut.h 这些库 ...

  4. 在 Mac OS X Yosemite 10.10.5 上配置 OpenGL 编程环境

    这个教程主要参考了youtube上的视频 Getting Started in OpenGL with GLFW/GLEW in Xcode 6 ,这个视频有点问题,不能照搬.本人通过自己摸(瞎)索( ...

  5. VS2010配置OpenGL开发环境

    OpenGL(Open Graphics Library)是一个跨编程语言.跨平台的专业图形程序接口.OpenGL是SGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任何一个OpenGL应 ...

  6. oracleLinux7上安装oracle11g r2(脚本简单配置环境)

    一 环境脚本简单配置 #!/bin/bashmv /etc/yum.repos.d/* /tmpmv iso.repo /etc/yum.repos.d/tar zxvf a.tar.gzmv 7Se ...

  7. VS2010配置OpenGL开发环境(转)

    OpenGL(Open Graphics Library)是一个跨编程语言.跨平台的专业图形程序接口.OpenGL是SGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任何一个OpenGL应 ...

  8. Windows 7 Visual Studio 2008配置OpenGL开发环境

    Windows 7 Visual Studio 2008配置OpenGL开发环境 glut下载地址: http://www.opengl.org/resources/libraries/glut/gl ...

  9. go语言的安装、环境变量配置及简单使用

    go语言的安装.环境变量配置及简单使用 1.安装git并且配置在path中,默认就勾选了 下载地址https://git-scm.com/download/win 2.下载安装visualstudio ...

  10. 大自然的搬运工:Ubuntu环境下gedit的一些个简单配置

    gedit是Ubuntu默认的文本编辑器,个人觉得还是不错的,用它来编程写一些小的demo也很方便,原谅我比较菜,vim用起来感觉打字速度真的很慢呀. 下面对gedit做一些简单配置,方便编程. 一. ...

随机推荐

  1. 【FAQ】HarmonyOS SDK 闭源开放能力 —Map Kit(4)

    1.问题描述: 添加了很多的marker点,每个marker点都设置了customInfoWindow,但是每次只能显示一个customInfoWindow吗? 解决方案: Marker的InfoWi ...

  2. bkce-6.0.4基础环境部署简述

    1.概述 1.1.相关网站: # 蓝鲸软件包下载:https://bk.tencent.com/download/ # 蓝鲸社区版软件包下载https://bk.tencent.com/downloa ...

  3. 使用SpongeExt快捷完成CudaSPONGE结合PySAGES的增强采样

    技术背景 在前面的一些文章中,我们介绍过关于CudaSPONGE的安装和基础使用方法,CudaSPONGE提供的Python接口,PySAGES增强采样软件的基本使用方法,还有一篇关于CudaSPON ...

  4. spandsp_start_dtmf的bug及修复

    概述 freeswitch是一款简单好用的VOIP开源软交换平台. 之前的文章中介绍过DTMF从2833到inband的转换,其中inband到2833的转换使用了"spandsp_star ...

  5. 容器、容器云和容器化PaaS平台之间到底是什么关系?

    本文分享自天翼云开发者社区<容器.容器云和容器化PaaS平台之间到底是什么关系?>,作者:s****n 一直都有很多人迷惑于容器应该属于 IaaS 或是 PaaS 层,也搞不清楚容器云到底 ...

  6. OI 博弈论若干模型总结(Genshing)

    OI博弈论的若干模型 OI 不是知识竞赛. 平等博弈是完全信息的(知道双方目标及操作收益),交替行动的,知道当前局面和转移的,平等(决策和当前状态操作者无关)的. 不平等博弈和上面一致,但是有一方更加 ...

  7. Linux编译方式安装redis

    redis安装1.安装gcc-c++编译环境yun install gcc-c++ 2.把redis上传到linux服务器 3.解压缩   tar -zxf redis-3.0.0.tar.gz 4. ...

  8. Json序列化对象后,使用Lombok后属性xAxis大写变成小写xaxis解决方法

    一.问题描述 最近在开发后端接口时,发现返回结构中,一个字段大小写转化有问题. lombok版本:1.18.14 VO对象如下,字段为echarts趋势图组件.预期返回xAxis,实际返回xaxis ...

  9. 普通人也能轻松掌握的20个DeepSeek高频提示词(2025版)

    一.基础原则 1️⃣ 说人话最重要 "不用专业术语,就像和朋友聊天一样描述需求". ️ 错误示范:"请用SWOT分析法输出新能源汽车行业报告". 正确示范:&q ...

  10. 告别 DeepSeek 系统繁忙,七个 DeepSeek 曲线救国平替入口,官网崩溃也能用!

    前言 DeepSeek作为一款备受瞩目的国产大模型,以其强大的功能和卓越的性能赢得了众多用户的青睐.然而,随着用户量的激增,DeepSeek官网近期频繁遭遇服务器繁忙甚至崩溃的问题,给广大用户带来了不 ...