opengl

OpenGL读取obj模型 源码 以及文件解析

心不动则不痛 提交于 2020-10-12 08:32:47
在最开始先贴出源码的 下载路径 : 最初版本: http://download.csdn.net/detail/mahabharata_/9614958 ! 最新版本: 主体代码 http://download.csdn.net/detail/mahabharata_/9821347 漏掉的一段reference.h : http://download.csdn.net/detail/mahabharata_/9847993 (对于最新版本,这两个链接都要下载,因为我在reference.h中实现了一些接口) 本来是免费资源,但是CSDN换新版后给我调了。 因为CSDN无法调整积分,如果没有积分的 可以邮箱联系我直接发(liuzh96@outlook.com) 。 【下载前请读】 1. 这两份资源,是我在大一时做的代码。若需要了解进一步优化,请邮箱联系我。 2. 为什么分成了两部分上传? 因为CSDN的原因,我至今无法删除已上传过的资源,所以干脆单独上传了之前漏掉的头文件。我上传过的大多数文件积分最初设置是0-5分,但是CSDN换成新版之后,我的所有资源都设成了需要积分下载,且原有积分都被提高了(我估计是CSDN需要各位充钱)。 如果没有积分的朋友,可以邮箱联系我,我有时间给您单独发~~~ 但是!竟然有人举报我???? 我滴个天鸭,分享资源还要被骂的,况且这分数还不是我自己设置的

OpenGL选择与拾取GL_SELECT 附源码

。_饼干妹妹 提交于 2020-10-12 08:10:46
【一个提示】该方法虽然可行但是已经淘汰很多年,建议自行尝试,后面也许会写论文最好的方式是: 1. 使用Kd-tree组织场景中的物体,以便于快速查找。 2. 使用屏幕坐标->空间三维坐标的逆矩阵变换,实现选取。 在介绍开始,首先给出工程和可执行程序的下载链接: OpenGL选择和拾取obj模型_代码及可执行文件 或者 http://download.csdn.net/detail/mahabharata_/9709959 程序的执行结果如下: 首先,我们在OpenGL的绘制方式有两种:GL_RENDER和GL_SELECT。顾名思义,GL_RENDER是渲染模式,也就是默认的绘制方式,通俗的讲,就是绘制操作都会被绘制在屏幕上;GL_SELECT则是选择模式,这种方式不会被绘制在屏幕上,之后的矩阵变化为选取矩阵的变化。 这里对GL_RENDER不做过多说明,因为这是默认方式,就是操纵显示在屏幕上时的矩阵变换。 对于GL_SELECT:在用OpenGL进行图形编程的时候,通常要用鼠标进行交互操作,比如用鼠标点选择画面中的物体,我们称之为拾取(Picking),这里我们介绍一下:在OpenGL中如何拾取,如何利用OpenGL提供的一系列函数来完成拾取,再简单介绍下OpenGL的名字栈(Name stack),拾取矩阵(Picking Matrix)等等。 1. 首先获得一系列参数信息:

Qt音视频开发24-ffmpeg音视频同步

ⅰ亾dé卋堺 提交于 2020-10-10 18:13:19
一、前言 用ffmpeg来做音视频同步,个人认为这个是ffmpeg基础处理中最难的一个,无数人就卡在这里,怎么也不准,本人也是尝试过网上各种demo,基本上都是渣渣,要么仅仅支持极其少量的视频文件比如收到的数据包是一帧视频一帧音频的,要么根本没法同步歪七八糟的,要么进度跳过去直接蹦蹦蹦崩溃的,其实最完美的音视频同步处理demo就是ffplay,我亲测过几十种各种各样的音视频本地文件,数十种视频流文件,都是非常完美,当然啦这是亲生的啦,不完美还玩个屁。 如果仅仅是播放视频流(不带音频流),可能不需要音视频同步,所以最开始只做rtsp视频流播放的时候根本没有考虑同步的问题,因为没遇到也不需要,等到后期发现各种rtmp、http、m3u8这种视频流的时候,问题大了去了,他是hls格式的视频流文件一次性过来的,一个个小视频文件过来的,如果没有同步的话,意味着突然之间刷刷刷的图片过去很多,下一次来的又是刷刷的,这就需要自己计算同步了,上次接收到的数据包放入队列,到了需要显示的时候就显示。 常用的音视频同步方法: 通过fps来控制,fps表示一秒钟播放多少帧,比如25帧,可以自行计算一帧解码用掉的时间,一帧占用(1000/25=40毫秒),通过延时来处理,这其实是最渣渣的办法。 记住开始解码的时间startTime,通过av_rescale_q计算pts时间,两者的差值就是需要延时的时间

FFmpeg 开发(07):FFmpeg + OpenGLES 实现 3D 全景播放器

泪湿孤枕 提交于 2020-10-04 01:53:43
该文章首发于微信公众号:字节流动 FFmpeg 开发系列连载: FFmpeg 开发(01):FFmpeg 编译和集成 FFmpeg 开发(02):FFmpeg + ANativeWindow 实现视频解码播放 FFmpeg 开发(03):FFmpeg + OpenSLES 实现音频解码播放 FFmpeg 开发(04):FFmpeg + OpenGLES 实现音频可视化播放 FFmpeg 开发(05):FFmpeg + OpenGLES 实现视频解码播放和视频滤镜 FFmpeg 开发(06):FFmpeg 播放器实现音视频同步的三种方式 前文中,我们已经利用 FFmpeg + OpenGLES + OpenSLES 实现了一个多媒体播放器,本文将基于此播放器实现一个酷炫的 3D 全景播放器。 全景播放器原理 全景视频是由多台摄像机在一个位置同时向四面八方拍摄,最后经过后期拼接处理生成的。 用普通的多媒体播放器播放全景视频,画面会呈现出严重的拉伸和扭曲变形。 全景播放器将视频画面渲染到球面上,相当于从球心去观察内部球面,观察到的画面 360 度无死角,这也就是市面上大多数“ VR 盒子”的实现原理。 构建球面网格 全景播放器原理与普通播放器的本质区别在渲染图像部分,普通播放器只需将视频画面渲染到一个矩形平面上,而全景播放器需要将视频画面渲染到球面。 为实现全景播放器,我们只需要利用

Qt音视频开发22-通用GPU显示

时光毁灭记忆、已成空白 提交于 2020-10-02 16:30:55
一、前言 采用GPU来绘制实时视频一直以来都是个难点,如果是安防行业的做视频监控开发这块的人员,这个坎必须迈过去,本人一直从事的是安防行业的电子围栏这个相当小众的细分市场的开发,视频监控这块仅仅是周边技术玩一玩探讨一下,关于GPU绘制这块着实走了不少的弯路。 之前用ffmpeg解码的时候,已经做了硬解码的处理,比如支持qsv、dxva2、d3d11va等方式进行硬解码处理,但是当时解码出来以后,还是重新转成了QImage来绘制,这样就大打折扣了,尽管可以看到GPU使用率有了,但是依然耗时的操作还是在CPU绘制显示,这就显得很尴尬了,Qt封装了大部分的opengl的操作,直接做成了QOPenGLWidget,既支持ffmpeg解码出来的yuyv格式的数据显示,还支持硬解码出来的nv12格式的数据显示,很好很强大,这样的话就大大减轻了CPU的压力,专门交给GPU绘制,经过这么一番彻底的改造,效率提升至少5倍,不要太牛逼!如果开启了opengl绘制,则对应内存会增加不少,可能opengl绘制需要开辟很多的内存来交换数据吧。 采用GPU显示需要同时支持yuyv格式和nv12格式,因为有些配置差的电脑,硬解码很可能歇菜,此时就需要用opengl来直接绘制ffmpeg软解码出来的yuyv数据,做到自动切换,这样就兼容了所有的可能的情况。测试发现ffmpeg4的性能要优于ffmpeg3

OpenCV开发笔记(五十九):红胖子8分钟带你深入了解分水岭算法(图文并茂+浅显易懂+程序源码)

落爺英雄遲暮 提交于 2020-10-02 15:40:31
若该文为原创文章,未经允许不得转载 原博主博客地址: https://blog.csdn.net/qq21497936 原博主博客导航: https://blog.csdn.net/qq21497936/article/details/102478062 本文章博客地址: https://blog.csdn.net/qq21497936/article/details/106258388 各位读者,知识无穷而人力有穷,要么改需求,要么找专业人士,要么自己研究 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) OpenCV开发专栏(点击传送门) 上一篇:《 OpenCV开发笔记(五十八):红胖子8分钟带你深入了解图像的矩(图文并茂+浅显易懂+程序源码) 》 下一篇:持续补充中… <br> 前言   红胖子,来也!   做识别,有时候需求要识别物体,物体在背景上比较杂,但是其边缘与背景图相差大,这个时候可以使用分水岭算法突出两边的颜色对比度,从而更好的分割。 <br> Demo                   <br> 分水岭算法 概述   分水岭分割方法,是一种基于拓扑理论的数学形态学的分割方法,其基本思想是把图像看作是测地学上的拓扑地貌