[音视频] SDL 渲染

这篇具有很好参考价值的文章主要介绍了[音视频] SDL 渲染。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

调用的 API

SDL_INIT # 初始化 SDL 库
SDL_CreateWIndow # 创建窗口
SDL_CreateRenderer # 创建渲染器 需要指定渲染窗口
SDL_CreateTexture # 需要指定纹理的上下文 和 数据修改频率
SDL_UpdateTexuture # 把 cpu 数据拷贝到 gpu 纹理中
SDL_RenderClear # 清空窗口纹理
SDL_RenderCopy # 把更新后的纹理拷贝到窗口纹理上
SDL_RenderPresent # 渲染上屏 (清空和拷贝的窗口纹理都是 back纹理,需要 present 才能有效果)文章来源地址https://www.toymoban.com/news/detail-685636.html

具体代码

#include <iostream>
#include <SDL/SDL.h>
using namespace std;

#pragma comment(lib, "SDL2.lib")
#undef main
int main(int argc, char* argv[])
{
	int w = 800;
	int h = 600;
	// 1 初始化
	if (SDL_Init(SDL_INIT_VIDEO))
	{
		cout << SDL_GetError() << endl;
		return -1;
	}
	// 2 生成 SDL 窗口
	auto screen = SDL_CreateWindow("teet sdl ffmpeg",
		SDL_WINDOWPOS_CENTERED,
		SDL_WINDOWPOS_CENTERED,
		w, h,
		SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
	if (!screen)
	{
		cout << SDL_GetError() << endl;
		return -2;
	}

	// 3 渲染器
	auto render = SDL_CreateRenderer(screen, -1, SDL_RENDERER_ACCELERATED);
	if (!render)
	{
		cout << SDL_GetError() << endl;
		return -3;
	}

	// 4 生成材质
	auto texture = SDL_CreateTexture(render, SDL_PIXELFORMAT_ARGB8888,
		SDL_TEXTUREACCESS_STREAMING,
		w, h);
	if (!texture)
	{
		cout << SDL_GetError() << endl;
		return -4;
	}

	// 存放图像的数据
	shared_ptr<unsigned char> rgb(new unsigned char[w * h * 4]);
	auto d = rgb.get();
	char temp = 255;
	for (;;)
	{
		temp--;
		// 判断退出
		SDL_Event ev;
		SDL_WaitEventTimeout(&ev, 10);
		if (ev.type == SDL_QUIT)
		{
			SDL_DestroyWindow(screen);
			break;
		}
		for (int j = 0; j < h; j++)
		{
			int b = j * w * 4;
			for (int i = 0; i < w * 4; i += 4)
			{
				d[b + i] = 0;		// B
				d[b + i + 1] = 0; // G
				d[b + i + 2] = temp; // R
				d[b + i + 3] = 0; // A
			}
		}
		// 5 将内存数据写入材质
		SDL_UpdateTexture(texture, NULL, d, w * 4);

		// 6 清理屏幕
		SDL_RenderClear(render);

		SDL_Rect sdl_rect;
		sdl_rect.x = 0;
		sdl_rect.y = 0;
		sdl_rect.w = w;
		sdl_rect.h = h;
		// 7 复制材质到渲染器
		SDL_RenderCopy(render, texture,
			NULL,
			&sdl_rect);
		static bool flag = true;
		// 8 渲染
		if(flag)
		SDL_RenderPresent(render);
	}

	return 0;
}

到了这里,关于[音视频] SDL 渲染的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频项目—基于FFmpeg和SDL的音视频播放器解析(二十一)

    介绍 在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器 如果您不理解本文,可参考我的前一篇文章音视频项目—基于FFmpeg和SDL的音视

    2024年02月02日
    浏览(72)
  • 音视频开发十七:Windows VS 2022 环境配置SDL2开发环境

    SDL(Simple DirectMedia Layer)是 一套开放源代码的跨平台多媒体开发库 , 使用C语言写成 。能够提供视频渲染,音频播放,鼠标/键盘控制等操作。 跨平台是说它对外接供了一套统一的接口,但在内部, 它会根据不同平台调用不同的底层 API库 。如在 Linux 系统下,它会使用 ope

    2024年02月10日
    浏览(47)
  • 多媒体库SDL以及实时音视频库WebRTC中的多线程问题实战详解

    目录 1、概述 2、开源跨平台多媒体库SDL介绍 3、开源音视频实时通信库WebRTC介绍

    2024年02月08日
    浏览(55)
  • 安卓音视频多对多级联转发渲染

    最近利用自己以前学习和用到的音视频知识和工程技能做了一个android的sdk,实现了本地流媒体ipc rtsp 拉流以及自带mip usb等camera audio节点产生的流媒体通过webrtc sfu的方式进行多对多级联发布共享,网状结构,p2p组网,支持实时渲染以及转推rtmp,webrtc,h264 h265 opus aac g711,均支持,在

    2024年02月14日
    浏览(90)
  • 音视频学习-音视频基础

    ` ◼ 像素:像素是一个图片的基本单位,pix是英语单词picture的简写,加上英语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素”之意。 ◼ 分辨率:是指图像的大小或尺寸。比如1920x1080。 ◼ 位深:是指在记录数字图像的颜色时,计算机实际上是用

    2024年02月12日
    浏览(111)
  • 【音视频】ffplay解析-音视频同步

    主要解析:以音频为基准,让视频同步音频 思路 视频慢了则丢掉部分视频帧(视觉-画⾯跳帧) 视频快了则继续渲染上⼀帧 具体实现 ffplay具体源码

    2024年02月07日
    浏览(49)
  • 音视频学习—音视频理论基础(2)

      音频是一种模拟信号,它是由声波转化而来的电信号。声波是通过气体、液体或固体传播的机械波,代表了声音的震动。在录制过程中,声音被转换成电信号,然后被储存在数字格式中。   声音的三要素是频率、振幅和波形   频率是指声波的振动次数,通常使用赫

    2024年04月29日
    浏览(41)
  • ffmpeg@音视频工具@音视频合并

    FFmpeg中文网 (github.net.cn) FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓

    2024年03月17日
    浏览(76)
  • 音视频 FFmpeg音视频处理流程

    推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月12日
    浏览(66)
  • 音视频 ffmpeg命令提取音视频数据

    保留封装格式 提取视频 提取音频 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包