QT SDL_HideWindow 崩溃

遇到该问题,解决办法不知道

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

尊敬SDL2的开发组你们好: 
很高兴能够使用你们开发的SDL2库。就像你们介绍的一样非常强大,易用,方便。 
我在Linux Cnetos 6.6 使用Qt 5.4开发窗口程序是遇到了SDL2的一些问题。 
调用下面接口时:SDL2会阻塞,界面崩溃。 
SDL_Window* window = SDL_CreateWindowFrom((void*)ptr_gfx->winId()); 
SDL_Renderer* render = SDL_CreateRenderer(window, -1,0); 
//render = SDL_CreateRenderer(window,-1,SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); 
经过我的分析,SDL2对X11窗口封装问题:错误出现在这个函数中。注释掉就可以正常运行。期待后面版本的对Qt for Linux兼容解决。 
void SDL_HideWindow(SDL_Window * window) 

CHECK_WINDOW_MAGIC(window, ); 

if (!(window->flags & SDL_WINDOW_SHOWN)) { 
return; 


/* SDL_UpdateFullscreenMode(window, SDL_FALSE); 

if (_this->HideWindow) { 
_this->HideWindow(_this, window); 

SDL_SendWindowEvent(window, SDL_WINDOWEVENT_HIDDEN, 0, 0);*/ 
』 
}

### SDL_OpenAudio 使用方法 `SDL_OpenAudio` 是用于初始化并打开音频设备的函数。此函数接受两个 `SDL_AudioSpec` 类型指针作为参数,第一个是指定期望配置的指针,第二个则是实际获得配置的指针[^3]。 ```cpp int SDLCALL SDL_OpenAudio(SDL_AudioSpec *desired, SDL_AudioSpec *obtained); ``` 当调用该函数时,如果成功,则返回 0;如果有错误发生,则返回负数,并可通过 `SDL_GetError()` 获取具体的错误信息[^5]。 对于期望的音频规格 (`desired`) ,应指定频率(`freq`)、格式(`format`)、声道数量(`channels`)以及其他属性。而 `obtained` 参数则用来接收最终被使用的音频设置,在某些情况下可能与请求的不同。这允许应用程序确认所得到的确切音频特性是否满足需求[^4]。 #### 设置音频结构体示例 下面展示了如何创建一个简单的音频规范实例: ```cpp SDL_AudioSpec wanted_spec; wanted_spec.freq = 44100; // 频率为44.1kHz wanted_spec.format = AUDIO_S16SYS; // 格式为16位有符号整数 wanted_spec.channels = 2; // 双声道立体声 wanted_spec.silence = 0; // 默认静音值 wanted_spec.samples = 1024; // 缓冲区大小设为1024样本点 wanted_spec.callback = NULL; // 不使用回调机制填充数据 wanted_spec.userdata = NULL; // 打开音频设备 if (SDL_OpenAudio(&wanted_spec, NULL) < 0) { fprintf(stderr, "Failed to open audio: %s\n", SDL_GetError()); } else { printf("Successfully opened the audio device.\n"); } // 开始播放声音流 SDL_PauseAudio(0); // 将暂停状态置为false以启动播放 ``` ### SDL_AudioFormat 支持的音频格式 关于支持的音频格式,`SDL_AudioFormat` 主要定义了几种常见的采样格式,包括但不限于以下几种[^1]: - **AUDIO_U8**: 无符号8位PCM编码。 - **AUDIO_S8**: 带符号8位PCM编码。 - **AUDIO_U16LSB / AUDIO_U16MSB**: 无符号16位PCM编码,分别表示小端序和大端序存储方式。 - **AUDIO_S16LSB / AUDIO_S16MSB**: 带符号16位PCM编码,同样区分小端序和大端序两种字节顺序。 - **AUDIO_S16SYS**: 当前平台默认的小/大端模式下的带符号16位PCM编码。 通常推荐使用 `AUDIO_S16SYS` 或者其他适合目标硬件架构的形式来确保最佳兼容性和性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值