opengl

编程笔记丨程序员如何持续吸收知识?教你提升99%的学习效率!

左心房为你撑大大i 提交于 2020-08-10 17:11:29
在软技能的知识体系中,对于我们程序员来说最重要的莫过于学习方法了。我们应该如何释放自己的内在潜力去像海绵一样地吸收知识呢?在本篇文章中我们将深入探讨如何成为一个顶尖的学习者。 一、如何成为一个高段位的学习者? 1、建构式的学习模式 对问题的好奇、对答案的渴望,是驱动我们学习和探索的主要动力。 「知识不是简单的记忆,而是由我们主动地去建构而来的」 。我们必须充分利用现有的知识,在主动性目标或核心问题的引导下去积极地进行探索,只有这样,我们才能够把得到的新知识与旧知识糅合在一起,并在头脑中建构出新的知识体系。 「一个好的长时程问题,能让我们成为“构建者”,因为我们不仅在学习知识,还在“建构答案”,在努力回答问题的过程中,我们筛选、评判与整合新旧知识,并把它们融汇而成一个知识体系。」 「一个好的长时程问题,能让我们成为“探索者”,主动地去探求未知的领域,扩宽“未知的未知”的边界,而不是仅仅满足于对现成的、边界明晰的知识的掌握。」 因此, 「提出一个深入的探索性问题是一种学习效果非常好的方法」 。在问题牵引下的学习,会帮助我们连续不断地构筑着知识之间的联系,最终便会形成针对于该问题的思维导图之解。 「提问是将我们引向深度学习的起点。一位优秀的学习者,一定同时也是一个优秀的提问者,他会从阅读、观察、思考的过程中产生问题,先解答表层的、容易的那部分,留下深度的、探索式的问题给自己

Qt音视频开发7-ffmpeg音频播放

人盡茶涼 提交于 2020-08-10 16:38:07
一、前言 之前用ffmpeg解码出来了音频,只是做了存储部分,比如存储成aac文件,播放的话早期用的是sdl来播放音频,自从Qt5以后提供了QAudioOutput来播放输入的音频数据,就更加方便了,可以直接将解码好的音频数据写入就能播放了,这些就少了个学习sdl的成本,而且和Qt就更加融合,不需要额外的第三方库,解码好的视频,其实就是一张张图片数据,可以直接用QPainter绘制或者QOpenGlWidget通过GPU显示,解码好的音频用QAudioOutput播放,这对于很多初学者来说,是个很好的消息,完美。 音频播放大致的流程如下: 初始化格式QAudioFormat,设置对应的属性。 初始化一个QAudioOutput音频播放对象。 将QAudioOutput启动后的播放设备交给QIODevice。 打开音频流后初始化SwrContext用来转换音频数据。 循环解码音频数据后调用swr_convert转换音频数据。 将转换好的音频数据直接write到QIODevice。 二、功能特点 多线程实时播放视频流+本地视频+USB摄像头等。 支持windows+linux+mac,支持ffmpeg3和ffmpeg4,支持32位和64位。 多线程显示图像,不卡主界面。 自动重连网络摄像头。 可设置边框大小即偏移量和边框颜色。 可设置是否绘制OSD标签即标签文本或图片和标签位置。

openGL学习笔记四十一: PBO

。_饼干妹妹 提交于 2020-08-10 10:54:26
PBO(Pixel Buffer Object):   opengl2.0之后才有的,PBO设计的目的就是快速地向显卡传输数据,或者从显卡读取数据,我们可以使用它更加高效的读取屏幕数据。   单个PBO读取屏幕数据效率大概和 glReadPixels() 差不多,双PBO交换读取效率会很高。原因是使用PBO时,屏幕上的数据不是读取到内存,而是从显卡读到PBO中,或者如果内部机制是读取到内存中,但这也是由DMA 控制器来完成的,而不是cpu指令来做的,再加上两个PBO交换使用,所以读取效率很高。   还可以使用PBO 高效读取内存数据(比如纹理)到显存中。 相关函数: glGenBuffers ( 2 , _pbo ) ; //创建两个个pbo 存储屏幕数据 创建一个pbo时在内存和显存都有一份 共两份(一个PBO) glBindBuffer ( GL_PIXEL_PACK_BUFFER , _pbo [ 0 ] ) ; //绑定 glBufferData ( GL_PIXEL_PACK_BUFFER , WIDTH * HEIGHT * 4 , 0 , GL_STREAM_READ ) ; //分配显存空间 . . . // DMA glBindBuffer ( GL_PIXEL_PACK_BUFFER , _pbo [ _DMA ] ) ; //指定pbo

从零开始手敲次世代游戏引擎(八十三)

橙三吉。 提交于 2020-08-10 03:39:23
本篇我们来实现游戏内交互界面(GUI) 游戏内GUI的实现可以有很多选择,我这里选用轻量级并且支持多平台的Dear ImGui。因为它整体上的结构与我们的引擎比较契合。 https://github.com/ocornut/imgui ​ github.com 这个Dear ImGui在业界也十分有名,其脱胎于PSV的 Tearaway 这款游戏,之后由原作者进行了大量的整理扩展工作,在诸如育碧的《刺客信条 奥德赛》《刺客信条 起源》、索尼的《拯救宇宙机器人》、SE的《FFVII重制版》、Mojang的《我的世界(Bedrock)》、暴雪的《Warcraft III: Reforged》等等知名游戏当中都有应用。同时也被集成在UE、Unity、Cocos2D等知名引擎当中。 Tearaway ​ tearaway.mediamolecule.com https://github.com/ocornut/imgui/wiki/Software-using-dear-imgui ​ github.com Dear ImGui以一组自包含的源代码形式提供。其本身封装了GUI部件的状态逻辑与控制,通过一个被称为ImGui::IO的模块与外部进行通信,包括获取用户输入以及输出渲染指令。Dear ImGui本身是平台及图形渲染API无关的。使用者需要将平台的用户输入事件转换传递给ImGui:

首次引入NVIDIA GPU 迈创全新显卡正式出货:4卡16屏

对着背影说爱祢 提交于 2020-08-10 00:11:09
  今年 1 月底,曾经大名鼎鼎的显卡品牌 Matrox (迈创)低调回归,发布了全新的 Matrox D 系列多屏显卡,而且首次使用了 NVIDIA GPU 方案。将近四个月后,这款产品终于开始上市了。   Matrox 来自加拿大,成立于 1976 年,比 ATI 早了 9 年,比 NVIDIA 更是早了 17 年,2D 显卡时代声名显赫,可是进入 3D 游戏时代后逐渐落寞,本世纪初停止了 GPU 的研发,转入视频市场,产品有编解码卡、帧捕捉器、2D/3D 深度学习图像软件、多屏宝等等,此前一直与 AMD 密切合作。   新发布的 Matrox D 系列采用特别定制的 NVIDIA Quadro GPU,但具体架构和规格一直没公布,只说支持 DX12、OpenGL 4.5、OpenCL 1.2,猜测至少是帕斯卡架构。   其中,Matrox D1480 是高端型号,配备四个 DisplayPort 1.2 接口,单个屏幕最高分辨率 5120×3200/60Hz,四屏就是 6550 多万像素,而且支持四卡并行,可以单系统输出 16 块屏幕。   Matrox D1450 则是四个 HDMI 2.0,单屏最高分辨率 4096×2160/60Hz。   二者均支持独立桌面模式、拉伸桌面模式、克隆模式、Pivot 模式和边缘重叠、边框管理、EDID 管理等技术。   D1480

项目实战:Qt手机模拟器拉伸旋转框架

*爱你&永不变心* 提交于 2020-08-09 18:51:53
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/106817346 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) Qt开发专栏:项目实战(点击传送门) Qt开发专栏:开发技术(点击传送门) <br> 需求   手机模拟器伸缩旋转框架,中间为容器区域预留,给手机模拟器; <br> 目标效果    <br> 功能   1.四个角鼠标图标切换,并且点击可拉伸;   2.手机框区域,鼠标点击可以拽托;   3.透明窗口的使用;   4.横竖屏的切换,,使用F1功能键; <br> 原理   使用QRegion和QRect对鼠标区域进行判断;   使用QPainter进行绘制;   使用qss定制按钮样式;   对QWidget的paintEvent和resizeEvent使用; <br> 涉及技术博文   《 Qt实用技巧

Qt开发技术:QtSVG介绍、使用和Demo

霸气de小男生 提交于 2020-08-09 17:35:03
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/105537292 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中.. .(点击传送门) Qt开发专栏:开发技术(点击传送门) 前话 红胖子,来也! Qt的SVG介绍、基本使用和Demo演示。 Demo Demo1:QSvgGenerator 保存后的SVG文件为: Demo2:QSvgRenderer Demo3:QSvgWidget Qt SVG 可缩放矢量图形(SVG)是一种基于XML的二维矢量图形描述语言。Qt提供了用于在小部件和其他绘制设备中呈现和显示SVG图形的类。 概述 Qt SVG提供了用于呈现SVG文件的类。要包含模块类的定义,请使用以下指令: #include <QtSvg> 要链接到模块,请将此行添加到qmake

Qt编写安防视频监控系统28-摄像机点位

拜拜、爱过 提交于 2020-08-09 14:52:04
一、前言 摄像机点位的功能主要是在图片地图和在线离线地图上设置对应摄像机的位置,然后双击可以实时预览对应摄像机的视频,在图片地图上拖动摄像机图标到对应位置,系统会自动保存位置信息,在网页地图上的摄像机位置,需要异步更新,比如先从右侧选择需要更新位置的摄像机,然后在地图上鼠标按下,会自动传回当前位置的经纬度信息,然后单击更新设备位置按钮即可,会自动js异步更新执行代码,更新完成以后会自动同步到另外的地图,比如在线地图更新了,离线地图也会自动更新。 在图片上移动位置保存这个功能很简单,但是在网页地图上,就需要用到js代码了,为此特意封装了一个js函数,专门负责添加设备点,总共10个参数,涵盖了各种情况,参数含义如下: name 表示标注点名称 显示在图标旁边的文本 为空则不显示 addr 表示标注点地址 title 表示弹框信息html格式标题 tips 表示弹框信息html格式内容 width 表示弹框的宽度 point 表示经纬度坐标 action 表示单击以后触发什么动作 0-不处理 1-自己弹框 2-发送信号 animation 表示动画效果 0-不处理 1-跳动 2-坠落 iconfile 表示图标文件路径,不设置则采用默认图标,注意图片的尺寸 iconindex 表示图标对应在图片中的索引 二、功能特点 支持多画面切换,全屏切换等,包括1+4+6+8+9+13+16+25

How does openGL come to the formula F_depth and and is this the window viewport transformation

a 夏天 提交于 2020-08-09 13:59:56
问题 #point no.1 after transforming points via the projection matrix , we end up with the point in the range [-1,1], but, in the depth testing chapter , the author mentions that F_depth = 1/z-1/far /(1/near - 1/far) converts the view space coordinates i.e. z=z eye is transformed from [-1,1] to [0,1] . I've followed this thread, and one of the members tell me that the formula F_depth is actually a composition for a series of steps done, and outlines this step: z_Clip = C*z_eye+D*W_eye w_Clip = -z

How does openGL come to the formula F_depth and and is this the window viewport transformation

拜拜、爱过 提交于 2020-08-09 13:59:52
问题 #point no.1 after transforming points via the projection matrix , we end up with the point in the range [-1,1], but, in the depth testing chapter , the author mentions that F_depth = 1/z-1/far /(1/near - 1/far) converts the view space coordinates i.e. z=z eye is transformed from [-1,1] to [0,1] . I've followed this thread, and one of the members tell me that the formula F_depth is actually a composition for a series of steps done, and outlines this step: z_Clip = C*z_eye+D*W_eye w_Clip = -z