OpenGL学习之路(1)——安装

我是在学习Qt的过程中,接触到2D、3D制图,也看到很多项目中会将Qt和OpenGL结合起来做开发,同时也对Qt里面的坐标系统云里雾里,遂决定两者结合起来学一下。

OpenGL是一个图形API,并不是一个独立的平台,因为我是基于QT C++平台,所以也选择了C++来作为OpenGL的工作语言。

首先搭建OpenGl的环境,就去网上找到一个视频教程:基于SDL2.0的库,照着视频配置了环境,敲了一通代码,敲得云里雾里,着色的时候出现Bug,没有理论支持,搜索解决不了所以决定先更换环境。

SDL2.0安装环境为 Win10 + VS2017 + SDL2-devel-2.0.10-VC+glm-0.9.9.6+glew-2.1.0-win32,将lib库和include文件夹抽取出来,方便项目调用,dll库放入执行文件夹内。

       1)在调试三角形的时候,VS报错,发现还需要一个包:glutdlls37beta,而这步在教程里并没有出现

       2)调试着色环境的时候,bug解决不了,怀疑和视频中的版本不一致导致,决定找一个详细的教程。

根据以下教程进行重新开始:

https://learnopenglcn.github.io/01%20Getting%20started/01%20OpenGL/

基于glfw-3.3+GLAD+VS2017

1)CMake生成GLFW工程文件(win32),VS2017直接编译GLFW.sln工程(x86 + debug)

2)GLAD是在线服务,选择OpenGl版本的时候,可以下载glview工具来查看你的显卡支持的OpenGl版本,我的是Version4.3

github上的这篇教程很详细,基本按照步骤来做,我用的VS2017 版本些许出入也并没有影响编译。

教程里说GLFW替代了GLEW,我个人对SDL2和GLFW的区别也查了一下相关资源

上下文与窗口包

OpenGL 上下文(英语:OpenGL context)的创建过程相当复杂,在不同的操作系统上也需要不同的做法。因此很多游戏开发和用户界面库都提供了自动创建 OpenGL 上下文的功能,其中包括SDLAllegro、SFML、FLTKQt等。也有一些库是专门用来创建 OpenGL 窗口的,其中最早的便是GLUT,后被freeglut取代,比较新的也有GLFW可以使用。

  • 以下包可以用来创建并管理 OpenGL 窗口,也可以管理输入,但几乎没有除此以外的其它功能:
    • GLFW——跨平台窗口和键盘、鼠标、手柄处理;偏向游戏
    • freeglut——跨平台窗口和键盘、鼠标处理;API 是 GLUT API 的超集,同时也比 GLUT 更新、更稳定
    • GLUT——早期的窗口处理库,已不再维护
  • 支持创建 OpenGL 窗口的还有一些“多媒体库”,同时还支持输入、声音等类似游戏的程序所需要的功能:
    • Allegro 5——跨平台多媒体库,提供针对游戏开发的 C API
    • SDL——跨平台多媒体库,提供 C API
    • SFML——跨平台多媒体库,提供 C++ API;同时也提供 C#、Java、Haskell、Go 等语言的绑定
  • 窗口包
    • FLTK——小型的跨平台 C++ 窗口组件库
    • Qt——跨平台 C++ 窗口组件库,提供了许多 OpenGL 辅助对象,抽象掉了桌面版 OpenGL 与 OpenGL ES 之间的区别
    • wxWidgets——跨平台 C++ 窗口组件库

Qt中已经封装好OpenGL,并且和GUI以及IO相关的处理Qt更便捷,结合教程学习起来更轻松一些。

原文地址:https://www.cnblogs.com/AmyBKLP/p/11875591.html

时间: 2024-07-30 13:27:45

OpenGL学习之路(1)——安装的相关文章

OpenGL学习之路(四)

1 引子 上次读书笔记主要是学习了应用三维坐标变换矩阵对二维的图形进行变换,并附带介绍了GLSL语言的编译.链接相关的知识,之后介绍了GLSL中变量的修饰符,着重介绍了uniform修饰符,来向着色器程序传入输入参数. 这次读书笔记的内容相对有趣一些,主要是和园友们分享讨论三维坐标变换矩阵在三维几何体上的应用,以及介绍一下如何实现三维图形与用户操作的交互.这一次笔记在三维编程中也是非常重要的——我们最后开发的三维程序最终就是要和目标用户进行交互的. 之前一直没有在博客上放过gif格式的动画图片,

OpenGL学习之路(五)

1 引子 不知不觉我们已经进入到读书笔记(五)了,我们先对前四次读书笔记做一个总结.前四次读书笔记主要是学习了如何使用OpenGL来绘制几何图形(包括二维几何体和三维几何体),并学习了平移.旋转.缩放坐标变换矩阵的理论推导和实践应用. 这一次读书笔记,我们一起来学习OpenGL中常用的坐标系以及坐标变换.在OpenGL中有几个坐标系,初学者常常被它们搞得晕头转向:为什么需要这些坐标系?各个坐标系有什么作用?……本文就来学习一下这些OpenGL中常用坐标系. 之后来看看投影矩阵的推导,投影变换矩阵

OpenGL学习之路(一)

1 引子 虽然是计算机科班出身,但从小对几何方面的东西就不太感冒,空间想象能力也较差,所以从本科到研究生,基本没接触过<计算机图形学>.为什么说基本没学过呢?因为好奇(尤其是惊叹于三维游戏的逼真,如魔兽世界.极品飞车),在研究生阶段还专门选修计算机图形学,但也只是听了几堂课,知道了有帧缓存.齐次坐标等零零散散的概念,之后读了一篇论文并上台作报告(压根没读懂).总之,当时只是觉得计算机图形学或三维渲染很牛,甚至问我什么是渲染都不知道,更不知道如何将3维几何体显示到2维屏幕上.令我现在想来非常可笑

OPENGL学习之路(0)--安装

此次实验目的: 安装并且配置环境. 1 下载 https://www.opengl.org/ https://www.opengl.org/wiki/Getting_Started#Downloading_OpenGL 在SDK中找到https://www.opengl.org/sdk/libs/ GLUS 下载,解压之后会得到一下文件 2安装 我是用的是MS Studio 2015 这是我的MS STUDIO的安装目录:C:\Program Files (x86)\Microsoft Visu

OpenGL学习之路(二)

1 引子 在上一篇读书笔记中,我们对书本中给出的例子进行详细的分析.首先是搭出一个框架:然后填充初始化函数,在初始化函数中向OpenGL提供顶点信息(缓冲区对象)和顶点属性信息(顶点数组对象),并启用顶点数组对象:最后填充绘制函数,首先清空颜色缓存,然后调用glDrawArray来绘制基本图形.例子中使用的坐标都是二维坐标,所以画出来的图形是二维图形(这里是两个三角形),而我们知道OpenGL最主要是用来进行三维图形的渲染的,所以有必要在学习OpenGL相关API之前对三维变换做一个简要的介绍.

python学习之路1_安装linux系统并桥接网络

本人由于刚毕业找到的工作需要python方面的知识而且python也是现在IT人士必会的语言之一,特此记录下下学习历程. 我学习python准备在VMWERA10.0中安装linux系统来学习,当然如何用虚拟机安装linux系统网上教程一大堆,这里我主要遇到过的坑是如何安装完linux系统后桥接到internet上.特此记录下,希望能帮助少许跟我遇到同样问题的小伙伴. 首先打开电脑或笔记本的网络和共享中心->更改适配器设置,进入网络连接,在此要注意,重点是查看自己网线插口名称或wifi名称.我的

Qt学习之路

  Qt学习之路_14(简易音乐播放器) Qt学习之路_13(简易俄罗斯方块) Qt学习之路_12(简易数据管理系统) Qt学习之路_11(简易多文档编辑器) Qt学习之路_10(Qt中statusBar,MessageBox和Timer的简单处理) Qt学习之路_9(Qt中Item Widget初步探索) Qt学习之路_8(Qt中与文件目录相关操作) Qt学习之路_7(线性布局和网格布局初步探索) Qt学习之路_6(Qt局域网聊天软件) Qt学习之路_5(Qt TCP的初步使用) Qt学习之路

Android的学习之路(三)项目的启动过程和安装过程详解

应用的安装和启动过程: 安装:第一步:java的编译器会把这个.java文件编译成.class文件 第二部:Android的SDK提供了一个dx工具,这个工具把.class文件转义成.dex文件 第三部:打包操作,把.dex文件和资源文件进行打包,打包成一个压缩文件,然后进行签名.最后就打包成为了.apk文件 第四部:调用adb指令:adb install c:/x.apk安装到模拟器 具体过程:.JAVA---->.class--.dx-->.dex--->打包签名--->.ap

我的QT5学习之路(一)——浅谈QT的安装和配置

一.前言 说到Qt,不能不说到C++,这门伟大的语言.因为其面向对象的编程思想和陡峭的学习曲线,一开始学习起来很是吃力.Qt从QT4开始基本封装了很多C++的工具库和界面库,而且支持跨平台,这是它最大的优势.相比于古老的MFC和使用C#的WPF来说,我更喜欢Qt来进行C++的界面设计,这也是我从新开始拾起Qt学习之路的原因. 说完了感受和学习的原因,就开始介绍Qt5了.我这里只做简单的介绍,重要的还是在学习过程中体会Qt的编程逻辑和设计思想. Qt,坦白来说,并不只是一个界面库,他是C++编程思