我将SDL用于游戏项目的View部分。我想在不中断主线程的情况下处理按键事件。所以我决定在另一个View线程中运行一个无限循环来捕获任何事件并通知主线程。但是,我不确定这是最好的,因为这可能会导致工作量增加并降低系统性能?有没有更好的方法来做这种事情?谢谢。 最佳答案 不要理会其他线程。有什么意义?你的主线程做什么?我想象这样的事情:更新逻辑渲染转到1如果您在更新周期之后(或期间)收到输入,那么您必须等到下一个更新周期才能看到效果。渲染时也是如此。您也可以在更新周期之前检查输入并全部单线程执行。输入更新逻辑渲染转到1多线程在这里没有
我正在开始一系列关于SDL的教程。在深入挖掘之前,我想知道SDL为我提供了哪些类型的控制来应对GLUT?此外,是否支持网络摄像头访问(用于面部跟踪或运动检测),或者最好通过OpenCV进行管理? 最佳答案 SDL和GLUT都没有任何网络摄像头功能。它们完全与网络摄像头无关。关于您的其他问题:GLUT未得到维护。十多年来,它没有看到任何更新。它已被FreeGLUT(二进制兼容的替代品)部分取代,但GLUT和FreeGLUT都不支持OpenGL3.0+。它们也不具备声音支持等功能。SDL和许多其他库(如GLFW、SFML等)支持较新版本
这是我的代码:#include#includeintmain(intargc,constchar*argv[]){SDL_Init(SDL_INIT_VIDEO);SDL_Window*_window;_window=SDL_CreateWindow("GameEngine",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,700,500,SDL_WINDOW_RESIZABLE);SDL_Delay(20000);SDL_DestroyWindow(_window);SDL_Quit();return0;}我在Xcode中工作。我已经下载了
我正在使用SDL和C++编写2D平台游戏。但是,我遇到了一个涉及缩放到分辨率的大问题。我希望游戏在全高清下看起来不错,所以游戏的所有图像都已创建,因此游戏的自然分辨率为1920x1080。但是,如果有人使用较小的分辨率,我希望游戏缩小到正确的分辨率,或者如果有人使用较大的分辨率,则游戏可以放大。问题是我一直没能找到一种有效的方法来做到这一点。我开始使用SDL_gfx库来预缩放所有图像,但这不起作用,因为它会产生很多偏移-一个错误,其中一个像素丢失。由于我的动画包含在一个图像中,因此当动画播放时,动画会在每一帧上略微向上或向下移动。然后经过一番观察后,我尝试使用opengl来处理缩放。目
我正在使用VisualStudio2015在64位Windows10上使用SDL2在C++中编写一个项目。我最近购买了一台新的Windows10笔记本电脑并从github克隆了我的项目。我的项目编译正确,但在运行时出现以下错误:Theapplicationwasunabletostartcorrectly(0xc000007b).ClickOKtoclosetheapplication.根据我目前的研究,这个错误通常是由加载不兼容的DLL引起的,例如64位版本而不是32位版本。到目前为止我发现的建议包括:检查我使用的是32位版本的SDL2DLL安装/重新安装适用于VisualStudi
您好,我想知道是否可以使用SDL2简单地截取屏幕截图。我尝试了SDL_GetWindowSurface但我收到一条错误消息:Nohardwareacceleratedrenderersavailable.我从here中获取了代码.我想到的另一个解决方案是将纹理转换为表面,但我没能做到...有什么解决办法吗? 最佳答案 您似乎在混合渲染系统。该方法仅适用于软件渲染的上下文。对于硬件渲染,您应该使用方法SDL_RenderReadPixels()。要保存屏幕截图,您需要这样的代码:SDL_Surface*sshot=SDL_Create
首先,我的代码设置了SDL环境,并继续更新OpenGL上下文,而没有执行任何SDL_Event处理。这会导致窗口,只要它是打开的,在Windows看来是没有响应的。窗口闪烁了一下。标题栏会附加“(NotResponding)”,在窗口内单击时它会变灰,因为Windows默认在非响应窗口上执行此操作。然而,在这种状态下(即使在它变灰时和之后),OpenGL显示继续更新和动画,这就是踢球者,它甚至在拖动窗口时这样做。很明显,在这种情况下,应用程序没有正确处理来自Windows的事件,导致Windows认为它处于挂起状态。但是有明确的证据表明opengl继续呈现。现在我对代码进行了一次修
所以我收到以下错误:1>SDL2main.lib(SDL_windows_main.obj):errorLNK2019:unresolvedexternalsymbol__imp__fprintfreferencedinfunction_ShowError1>SDL2main.lib(SDL_windows_main.obj):errorLNK2019:unresolvedexternalsymbol__imp____iob_funcreferencedinfunction_ShowError我的代码很简单:#include#include"SDL2\SDL.h"intmain(int
我打算将我的游戏从glut迁移到sdl。它在过剩情况下运行良好,但我想使用一些sdl功能。所以我进入我的项目属性,在目标标题下,我单击将要编译的程序,构建阶段,将二进制文件与库链接,添加SDL.framework与我对OpenGL.framework和GLUT.framework所做的完全相同但是当我添加:#include当我尝试构建时出现链接器错误:Undefinedsymbolsforarchitecturex86_64:"_main",referencedfrom:__startincrt1.o(maybeyoumeant:_SDL_main)ld:symbol(s)notfou
是否可以使用可在运行时使用的SDL在程序中嵌入图像。例如,我有一个程序可以在启动时显示包含Logo和版权信息的启动画面。而不是将此图像放在位图文件中并使用SDL_LoadBMP将其加载到SDL_Surface。我想将图像嵌入到程序二进制文件中,以阻止有人可能更改启动图像和版权名称。有没有人对如何做到这一点有任何建议?示例代码会很棒。 最佳答案 将文件嵌入可执行文件很容易,但也有一些问题,有几种方法可以做到这一点,包括一些可移植和不可移植的方法。使用#embed据报道,这将是C23的一部分。它也可能会出现在C++26中。检查您的编译器