草庐IT

c++ - SDL 窗口不显示

这是我的代码:#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中工作。我已经下载了

c++ - 如何缩放到 SDL 中的分辨率?

我正在使用SDL和C++编写2D平台游戏。但是,我遇到了一个涉及缩放到分辨率的大问题。我希望游戏在全高清下看起来不错,所以游戏的所有图像都已创建,因此游戏的自然分辨率为1920x1080。但是,如果有人使用较小的分辨率,我希望游戏缩小到正确的分辨率,或者如果有人使用较大的分辨率,则游戏可以放大。问题是我一直没能找到一种有效的方法来做到这一点。我开始使用SDL_gfx库来预缩放所有图像,但这不起作用,因为它会产生很多偏移-一个错误,其中一个像素丢失。由于我的动画包含在一个图像中,因此当动画播放时,动画会在每一帧上略微向上或向下移动。然后经过一番观察后,我尝试使用opengl来处理缩放。目

c++ - 在Win10上用VS2015编译的C++ SDL2程序调试加载时间错误

我正在使用VisualStudio2015在64位Windows10上使用SDL2在C++中编写一个项目。我最近购买了一台新的Windows10笔记本电脑并从github克隆了我的项目。我的项目编译正确,但在运行时出现以下错误:Theapplicationwasunabletostartcorrectly(0xc000007b).ClickOKtoclosetheapplication.根据我目前的研究,这个错误通常是由加载不兼容的DLL引起的,例如64位版本而不是32位版本。到目前为止我发现的建议包括:检查我使用的是32位版本的SDL2DLL安装/重新安装适用于VisualStudi

c++ - SDL2 C++ 截图

您好,我想知道是否可以使用SDL2简单地截取屏幕截图。我尝试了SDL_GetWindowSurface但我收到一条错误消息:Nohardwareacceleratedrenderersavailable.我从here中获取了代码.我想到的另一个解决方案是将纹理转换为表面,但我没能做到...有什么解决办法吗? 最佳答案 您似乎在混合渲染系统。该方法仅适用于软件渲染的上下文。对于硬件渲染,您应该使用方法SDL_RenderReadPixels()。要保存屏幕截图,您需要这样的代码:SDL_Surface*sshot=SDL_Create

c++ - 拖动时保持窗口事件(Win32 上的 SDL)

首先,我的代码设置了SDL环境,并继续更新OpenGL上下文,而没有执行任何SDL_Event处理。这会导致窗口,只要它是打开的,在Windows看来是没有响应的。窗口闪烁了一下。标题栏会附加“(NotResponding)”,在窗口内单击时它会变灰,因为Windows默认在非响应窗口上执行此操作。然而,在这种状态下(即使在它变灰时和之后),OpenGL显示继续更新和动画,这就是踢球者,它甚至在拖动窗口时这样做。很明显,在这种情况下,应用程序没有正确处理来自Windows的事件,导致Windows认为它​​处于挂起状态。但是有明确的证据表明opengl继续呈现。现在我对代码进行了一次修

c++ - 如何修复 Visual Studio 2015 Preview 上 Unresolved SDL 2.0.3 外部问题?

所以我收到以下错误: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

c++ - 简单地包含 SDL header 会导致链接器错误

我打算将我的游戏从glut迁移到sdl。它在过剩情况下运行良好,但我想使用一些sdl功能。所以我进入我的项目属性,在目标标题下,我单击将要编译的程序,构建阶段,将二进制文件与库链接,添加SDL.framework与我对OpenGL.framework和GLUT.framework所做的完全相同但是当我添加:#include当我尝试构建时出现链接器错误:Undefinedsymbolsforarchitecturex86_64:"_main",referencedfrom:__startincrt1.o(maybeyoumeant:_SDL_main)ld:symbol(s)notfou

c++ - SDL 在程序可执行文件中嵌入图像

是否可以使用可在运行时使用的SDL在程序中嵌入图像。例如,我有一个程序可以在启动时显示包含Logo和版权信息的启动画面。而不是将此图像放在位图文件中并使用SDL_LoadBMP将其加载到SDL_Surface。我想将图像嵌入到程序二进制文件中,以阻止有人可能更改启动图像和版权名称。有没有人对如何做到这一点有任何建议?示例代码会很棒。 最佳答案 将文件嵌入可执行文件很容易,但也有一些问题,有几种方法可以做到这一点,包括一些可移植和不可移植的方法。使用#embed据报道,这将是C23的一部分。它也可能会出现在C++26中。检查您的编译器

c++ - 使用 SDL 的智能指针

对于我的游戏,我应该使用原始指针来创建SDL_Window、SDL_Renderer、SDL_Texture等,因为它们具有特定的删除功能SDL_DestroyTexture(texture);或者我应该在创建unique_ptr或shared_ptr时添加自定义删除器,如果是这样,我将如何使用SDL类型执行此操作? 最佳答案 您可以创建一个具有多个重载的operator()实现的仿函数,每个实现都会为各自的参数类型调用正确的destroy函数。structsdl_deleter{voidoperator()(SDL_Window*

windows - C++11 + SDL2 + Windows : Multithreaded program hangs after any input event

我正在使用C++11、MinGW和WindowsAPI开发屏幕捕获程序。我正在尝试使用SDL2实时观察我的屏幕捕获程序是如何工作的。窗口打开正常,只要我只移动鼠标光标,程序似乎运行良好。但是如果我在窗口中单击它的菜单栏,在窗口外,或者按任意键,SDL窗口就会卡住。我已经为事件设置了一些日志记录以弄清楚发生了什么。除了SDL_WINDOW_FOCUS_GAINED之外,我从未收到任何事件,SDL_TEXTEDITING,和SDL_WINDOWEVENT_SHOWN以该顺序。所有这些都是在开始时收到的。我试图找到有关SDL事件处理的教程,因为这是我对问题根源的最佳猜测。除了基本的事件处理之