当前位置: 首页 > news >正文

无锡网站建设工作kol合作推广

无锡网站建设工作,kol合作推广,网站keywords标签怎么写,做兼职最好的网站有哪些显示YUV图片的步骤 1.初始化SDL库 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 2.创建窗口用于显示YUV图像: 目的:创建一个…

显示YUV图片的步骤

1.初始化SDL库

  • 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。
  • 操作:调用 ·SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。

2.创建窗口用于显示YUV图像:

  • 目的:创建一个窗口作为显示YUV图像的目标。
  • 操作:使用 SDL_CreateWindow 创建一个SDL窗口,并指定窗口的位置、大小和标志(如是否全屏等)。你可以根据需要自定义窗口的属性。
  1. 创建渲染器:
  • 目的:创建一个渲染器,用于在窗口中绘制图像。
  • 操作:使用 SDL_CreateRenderer 创建一个渲染器。可以选择硬件加速和垂直同步选项以提高性能和视觉质量。
  1. 读取YUV文件并准备数据:
  • 目的:从YUV文件中读取原始像素数据,并准备好这些数据以便后续处理。
  • 操作:打开YUV文件,读取Y、U、V平面的数据到内存中。这一步骤通常包括分配适当的缓冲区来存储YUV数据。
  1. 创建纹理并设置颜色格式:
  • 目的:创建一个纹理对象,用于在GPU中存储图像数据,并设置纹理的颜色格式(如YUV420P)。
  • 操作:使用 SDL_CreateTexture 创建一个纹理,指定像素格式(例如 SDL_PIXELFORMAT_YV12SDL_PIXELFORMAT_IYUV),以及访问模式(如 SDL_TEXTUREACCESS_STREAMING)。
  1. 将YUV数据更新到纹理:
  • 目的:将读取的YUV数据复制到纹理中,以便可以在渲染时使用。
  • 操作:使用 SDL_UpdateYUVTexture 函数将Y、U、V平面的数据分别更新到纹理中。
  1. 渲染纹理到屏幕上:
  • 目的:将纹理绘制到窗口的渲染层上,完成图像的显示。
  • 操作:调用 SDL_RenderClear 清除渲染目标,然后使用 SDL_RenderCopy 将纹理复制到渲染器的目标区域,最后调用 SDL_RenderPresent 刷新屏幕以显示图像。
  1. 处理事件和清理资源:
  • 目的:处理用户输入或事件,并释放所有分配的资源。
  • 操作:使用 SDL_PollEvent 处理事件(如关闭窗口),并在程序结束时调用相应的销毁函数(如 SDL_DestroyTexture、SDL_DestroyRenderer 和 SDL_DestroyWindow),最后调用 SDL_Quit 退出SDL库。

代码用例:

void playThread::run()
{//创建窗口SDL_Window *window = nullptr;//渲染上下文SDL_Renderer *renderer = nullptr;//纹理(直接跟特定驱动程序相关的像素数据)SDL_Texture *texture = nullptr;//文件QFile file(FILENAME);//初始化子系统END(SDL_Init(SDL_INIT_VIDEO),SDL_Init);//创建一个窗口//标题-X-Y-width-heightwindow = SDL_CreateWindow("SDL显示YUV图片",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,IMG_W,IMG_H,SDL_WINDOW_SHOWN);END(!window,SDL_CreateWindow);//创建渲染上下文--用于渲染图形到窗口//这SDL_RENDERER_ACCELERATED -- 个标志告诉 SDL 尝试创建一个使用硬件加速的渲染器//SDL_RENDERER_PRESENTVSYNC -- 这个标志使渲染器的呈现操作同步到显示器的垂直同步(VSync)renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);//如果创建失败if(!renderer){renderer = SDL_CreateRenderer(window,-1,0);END(!renderer,SDL_CreateRenderer);}//创建纹理ttexture = SDL_CreateTexture(renderer,PIXEL_FORMAT,SDL_TEXTUREACCESS_STREAMING,IMG_W,IMG_H);END(!texture,SDL_CreateTextureFromSurface);//打开YUV文件if(!file.open(QFile::ReadOnly)){qDebug() << "file open error" << FILENAME;goto end;}//将YUV的像素数据填充到texture -- nullptr空表示整个texture都是END(SDL_UpdateTexture(texture,nullptr,file.readAll().data(),IMG_W),SDL_UpdateTexture);//设置绘制颜色(画笔颜色)SDL_SetRenderDrawColor(renderer,0,0,0,SDL_ALPHA_OPAQUE);//用绘制颜色(画笔颜色)清除渲染目标---也就是覆盖SDL_RenderClear(renderer);//拷贝纹理数据到渲染目标(默认时window)END(SDL_RenderCopy(renderer,texture,nullptr,nullptr),SDL_RenderCopy);//更新所有的渲染操作到屏幕上SDL_RenderPresent(renderer);SDL_Delay(2000);end:file.close();SDL_DestroyRenderer(renderer);SDL_DestroyTexture(texture);SDL_DestroyWindow(window);SDL_Quit();//初始化子系统后必须做一个退出操作
}

用例输出图:
在这里插入图片描述

如何自定义显示窗口呢?

首先我们在create窗口的时候,我们可以通过winId来设置的它的显示窗口,如下例子所示:

在进行点击按钮显示的时候,将显示窗口目标的winId传给create窗口。

void MainWindow::on_pushButton_clicked()
{//playThread * pt = new playThread((void *)ui->label->winId(),this);playThread * pt = new playThread((void *)_widget->winId(),this);pt->start();}
oid playThread::run()
{//创建窗口SDL_Window *window = nullptr;//渲染上下文SDL_Renderer *renderer = nullptr;//纹理(直接跟特定驱动程序相关的像素数据)SDL_Texture *texture = nullptr;//文件QFile file(FILENAME);//初始化子系统END(SDL_Init(SDL_INIT_VIDEO),SDL_Init);//创建一个窗口//标题-X-Y-width-heightwindow = SDL_CreateWindowFrom(_winId);END(!window,SDL_CreateWindow);//创建渲染上下文--用于渲染图形到窗口//这SDL_RENDERER_ACCELERATED -- 个标志告诉 SDL 尝试创建一个使用硬件加速的渲染器//SDL_RENDERER_PRESENTVSYNC -- 这个标志使渲染器的呈现操作同步到显示器的垂直同步(VSync)renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);//如果创建失败if(!renderer){renderer = SDL_CreateRenderer(window,-1,0);END(!renderer,SDL_CreateRenderer);}//创建纹理ttexture = SDL_CreateTexture(renderer,PIXEL_FORMAT,SDL_TEXTUREACCESS_STREAMING,IMG_W,IMG_H);END(!texture,SDL_CreateTextureFromSurface);//打开YUV文件if(!file.open(QFile::ReadOnly)){qDebug() << "file open error" << FILENAME;goto end;}//将YUV的像素数据填充到texture -- nullptr空表示整个texture都是END(SDL_UpdateTexture(texture,nullptr,file.readAll().data(),IMG_W),SDL_UpdateTexture);//设置绘制颜色(画笔颜色)SDL_SetRenderDrawColor(renderer,0,0,0,SDL_ALPHA_OPAQUE);//用绘制颜色(画笔颜色)清除渲染目标---也就是覆盖SDL_RenderClear(renderer);//拷贝纹理数据到渲染目标(默认时window)END(SDL_RenderCopy(renderer,texture,nullptr,nullptr),SDL_RenderCopy);//更新所有的渲染操作到屏幕上SDL_RenderPresent(renderer);SDL_Delay(2000);end:file.close();SDL_DestroyRenderer(renderer);SDL_DestroyTexture(texture);SDL_DestroyWindow(window);SDL_Quit();//初始化子系统后必须做一个退出操作
}

用例输出图:
在这里插入图片描述

http://www.shuangfujiaoyu.com/news/21311.html

相关文章:

  • 做视频点播网站如何赚钱西安百度关键词包年
  • 甘肃商城网站建设佛山seo关键词排名
  • 国内做任务得数字货币的网站东莞seo优化方案
  • 如何在网站做电子杂志营销网站建设多少钱
  • 怎样找别人制作网站东莞建设企业网站公司
  • 西安网站开开发chatgpt入口
  • 如何用php做网站网站流量统计平台
  • 做网站买计划书云seo
  • 工信部网站备案查询系统seo 最新
  • 简约风格网站华为云速建站
  • 网站开发趋势福建seo快速排名优化
  • 免费建站网站教程视频号视频下载助手app
  • 建设一个Web网站seo网站排名优化价格
  • 网站建设消费调查问卷百度账号快速注册入口
  • 怎么样做网站视频管理方面的培训课程
  • 那里有学做网站的做电商一个月能挣多少钱
  • 怎么做淘宝网站推广河南百度seo
  • 可不可以用p2p做视频网站北京百度网讯人工客服电话
  • 提供做网站费用短期培训就业学校
  • 织梦如何将wordpressseo有哪些经典的案例
  • 如何在别人的网站模板上加兼容郑州外语网站建站优化
  • gif素材网站推荐百度推广管理
  • 垂直型电商网站如何做seo的目的是什么
  • 黔西南做网站的有几家手机网站建设公司
  • 做汤的网站怎么建立一个属于自己的网站
  • 靠做任务赚零花钱的网站如何优化网页加载速度
  • 广西做网站的公司怎么找关键词
  • 工行网站跟建设网站区别百度一下首页网页百度
  • 休闲食品网站建设百度推广服务费一年多少钱
  • 织梦网站地图如何做百度 人工客服