草庐IT

SDL_PixelFormat

全部标签

QT + FFmpeg 5.x + x264 + x265 + SDL2 音视频播放器

QT+FFmpeg5.x+x264+x265+SDL2音视频播放器使用了QT的QML设计界面,人机交互;使用了FFmpeg5.x+x264+x265+SDL2完成了音视频的解析到播放;阅读了ffplay的源码,用到了ffplay的核心思想.想熟悉ffmpeg和ffplay的朋友,都可以参考学习.代码自取:https://github.com/truedei/UPlayer展示图1.主界面2.通过中心的按钮选择媒体文件3.通过菜单打开文件4.开始播放5.暂停播放6.继续播放7.快进可以想象一下,截图没效果8.快退可以想象一下,截图没效果9.静音10.调整音量11.时时进度条和时间显示12.停止播

c++ - SDL2 OpenGL3 如何在函数内初始化 SDL

我正在试验新的SDL2beta和OpenGL3上下文,我遇到了一个奇怪的问题:如果我在main()函数中运行SDL初始化代码,它工作正常,但我想将此代码放在单独的init_sdl()函数中。如果我将初始化代码放在单独的init_sdl()函数中,并从main()调用此函数,则永远不会绘制背景颜色,并且程序开始疯狂消耗我所有的系统资源。有人能给我指出一个工作示例,其中SDL在单独的函数中初始化吗?我似乎找不到一个......也许这是不可能的?我想我依稀记得在使用SDL1.2时遇到过类似的问题,但自从我使用它以来已经有几年了,而且我认为我从未找到解决方案。事实上,这可能是我选择改用SFML

c++ - SDL Video Init 在 Mac OS X 10.8 上导致异常

我刚刚将我的C++游戏移植到OSX,它第一次运行时,我在尝试调用SDL_SetVideoMode时遇到以下异常。2012-09-2815:01:05.437SCRAsteroids[28595:707]*由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“错误(1000)在第259行创建CGSWindow”*首先抛出调用栈:(0CoreFoundation0x00007fff8b53b716__exceptionPreprocess+1981libobjc.A.dylib0x00007fff90e30470objc_excepti

c++ - SDL2 - 为什么 SDL_CreateTextureFromSurface() 需要渲染器*?

这是SDL_CreateTextureFromSurface函数的语法:SDL_Texture*SDL_CreateTextureFromSurface(SDL_Renderer*renderer,SDL_Surface*surface)但是,我很困惑为什么我们需要传递渲染器*?我以为我们只在绘制纹理时才需要渲染器*? 最佳答案 您需要SDL_Renderer来获取有关适用约束的信息:支持的最大尺寸像素格式可能还有更多...... 关于c++-SDL2-为什么SDL_CreateText

c++ - SDL:在另一个纹理之上渲染纹理

我遇到以下问题:我需要在另一个纹理之上渲染一个纹理,然后渲染那个主纹理。例如,我有蓝色矩形纹理,我想在这个蓝色矩形上绘制红色矩形。但是我希望他们只在这个矩形上限制渲染。就像下面的图片:我读到了一些关于它们之间的纹理blit或类似的东西,但我不确定这是否可行。我的代码是这样的:SDL_RenderCopy(ren,bluetexture,NULL,dBLUErect);SDL_RenderCopy(ren,redtexture,NULL,dREDrect);SDL_RenderPresent(ren);有人知道如何在SDL2.0中执行此操作吗?顺便说一下,这就是我使用的。

c++ - 清除内存块(或 SDL 表面)的最快方法是什么?

我目前正在使用SDL开发一个项目。它主要是在屏幕上绘制和移动图像(表面)。要移动图像而不留下痕迹,您必须首先清除屏幕表面,这与glClear()非常相似,我目前正在使用一个简单的for循环遍历表面的像素(也在表面或memset上绘制一个黑框)。虽然以前的解决方案适用于小表面,但随着表面变大,它们会变得越来越慢,所以我一直在寻找可以清除(归零)内存块的最快方法。此外,一位friend指出,使用SIMD指令可以非常快地完成工作,但我上次完成ASM是在8085上,对此的任何见解也可能有用。 最佳答案 最快的方法是使用memset。mems

c++ - 如何使用 SDL 修改像素?

我有一个小问题:我无法修改SDL屏幕的像素。具体来说,以下代码不起作用。Uint32*pixels=(Uint32*)screen->pixels;screen->pixels=pixels;这会编译,但不会显示任何内容。我错过了什么? 最佳答案 我有以下函数用于在SDL_Surface中设置像素。有两个版本,分别用于32位、24位、16位和8位表面。如果您只想设置单个像素,则可以使用普通版本。但是如果你想设置一堆像素,首先你锁定表面,然后你使用nolock版本(之所以这样命名是因为它不锁定表面),然后你解锁。这样你就不会重复锁定和

c++ - SDL-绘制 'negative'圆圈( war 迷雾)

我有800x600正方形要绘制到屏幕上。我想在其中“剪切”圆圈(其中alpha值为0)。基本上,我是在map上绘制整个矩形,因此我在绘制的这些“圆圈”中可以看到map,否则会看到灰色正方形 最佳答案 因此,我认为您正在尝试向其中一款游戏添加war迷雾?几周前,我为本地大学制作了一个小型演示,以展示A*寻路功能,因此我认为我可以为您增加war迷雾。结果如下:初始map首先,从完整的map开始,这是完全可见的雾然后,我添加了一个覆盖整个屏幕的表面(请注意,我的map比屏幕小,因此在这种情况下,我只是在屏幕上添加了war迷雾,但是如果您要

c++ - SDL2 无法创建窗口,因为找不到匹配的 GLX 视觉对象

我有一个问题,因为我目前在Windows10上运行Ubuntu终端。我还安装了XMing作为我的X服务器(我将XMing用于qemu等...)。我正在尝试运行这个SDL2程序。所以我有这个用于main.cpp:#include#include#include#include#includeintmain(intargc,char*argv[]){intfinal_status=1;SDL_Window*window;SDL_GLContextopenGL_context;if(SDL_Init(SDL_INIT_VIDEO)){fprintf(stderr,"Unabletoiniti

c++ - 使用 SDL/C++ 处理事件的最佳方式是什么

我将SDL用于游戏项目的View部分。我想在不中断主线程的情况下处理按键事件。所以我决定在另一个View线程中运行一个无限循环来捕获任何事件并通知主线程。但是,我不确定这是最好的,因为这可能会导致工作量增加并降低系统性能?有没有更好的方法来做这种事情?谢谢。 最佳答案 不要理会其他线程。有什么意义?你的主线程做什么?我想象这样的事情:更新逻辑渲染转到1如果您在更新周期之后(或期间)收到输入,那么您必须等到下一个更新周期才能看到效果。渲染时也是如此。您也可以在更新周期之前检查输入并全部单线程执行。输入更新逻辑渲染转到1多线程在这里没有