这是我的代码:#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中。检查您的编译器
对于我的游戏,我应该使用原始指针来创建SDL_Window、SDL_Renderer、SDL_Texture等,因为它们具有特定的删除功能SDL_DestroyTexture(texture);或者我应该在创建unique_ptr或shared_ptr时添加自定义删除器,如果是这样,我将如何使用SDL类型执行此操作? 最佳答案 您可以创建一个具有多个重载的operator()实现的仿函数,每个实现都会为各自的参数类型调用正确的destroy函数。structsdl_deleter{voidoperator()(SDL_Window*
我正在使用C++11、MinGW和WindowsAPI开发屏幕捕获程序。我正在尝试使用SDL2实时观察我的屏幕捕获程序是如何工作的。窗口打开正常,只要我只移动鼠标光标,程序似乎运行良好。但是如果我在窗口中单击它的菜单栏,在窗口外,或者按任意键,SDL窗口就会卡住。我已经为事件设置了一些日志记录以弄清楚发生了什么。除了SDL_WINDOW_FOCUS_GAINED之外,我从未收到任何事件,SDL_TEXTEDITING,和SDL_WINDOWEVENT_SHOWN以该顺序。所有这些都是在开始时收到的。我试图找到有关SDL事件处理的教程,因为这是我对问题根源的最佳猜测。除了基本的事件处理之