草庐IT

c++ - 如何在 SDL 中获取屏幕尺寸

我正在尝试使用SDL和C++编写程序。如何在SDL中获取屏幕的宽度和高度(以像素为单位)?我试图获取屏幕的宽度而不是窗口的宽度。... 最佳答案 在SDL2中,使用SDL_GetCurrentDisplayMode或SDL_GetDesktopDisplayMode根据您的需要。使用示例:SDL_DisplayModeDM;SDL_GetCurrentDisplayMode(0,&DM);autoWidth=DM.w;autoHeight=DM.h;在高DPI显示器上,这将返回虚拟分辨率,而不是物理分辨率。来自SDL2维基:Ther

c++ - 'sizeof' 对不完整类型 'SDL_Window' 的无效应用

创建指向SDL_Window结构的指针并将其分配给shared_ptr,会导致上述错误。部分类(class):#includeclassApplication{staticstd::shared_ptrwindow;}定义:#include"Application.h"std::shared_ptrApplication::window{};boolApplication::init(){SDL_Window*window_=nullptr;if((window_=SDL_CreateWindow(title.c_str(),SDL_WINDOWPOS_UNDEFINED,SDL_WI

c++ - 如果我有固定数量的相互独立的计算,多线程是否会显着提高性能?

我正在编写光线转换游戏引擎。可以在不知道其他射线的情况下计算每条射线(我只计算距离)。由于计算之间没有等待时间,我想知道使光线计算多线程化是否值得。性能是否有可能提升? 最佳答案 如果处理得当,多线程很可能会提高性能。按照您陈述问题的方式,它是多线程的完美候选者,因为计算是独立的,从而将线程之间的协调需求降至最低。您仍然可能无法获得加速,或者可能无法获得预期的全部速度的一些原因可能包括:1)瓶颈可能不是片上CPU执行资源(例如,ALU绑定(bind)操作),而是一些共享的东西,例如内存或共享LLC带宽。例如,在某些架构上,单个线程可

c++ - 使用 SDL2 渲染平铺 map 的最快方法

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭2年前。Improvethisquestion我正在寻找一种非常快速的方法来使用SDL2渲染具有三层的平铺map。我正在使用SDL_RenderCopy,但速度很慢...

c++ - 别人的库#define命名冲突

很难为这个问题想出一个合适的标题。无论如何...我目前正在研究GUI我的游戏在SDL.当出现奇怪的错误时,我已经完成了软件绘图并正准备开始其中的OpenGL部分。我包含了“SDL/SDL_opengl.h”header并进行了编译。它抛出“错误C2039:‘DrawTextW’:不是‘GameLib::FontHandler’的成员”,这是一个足够简单的错误,但我没有任何称为DrawTextW的东西,只有FontHandler::DrawText。我搜索DrawTextW并在header“WinUser.h”中的#define调用中找到它!//WinUser.h#defineDrawT

c++ - SDL iOS 禁用事件泵

我对以下SDL函数有疑问:voidSDL_iPhoneSetEventPump(SDL_boolenabled)文档说:UsethisfunctiontoenableordisabletheSDLeventpumponAppleiOS.现在什么情况下需要或推荐使用这个功能? 最佳答案 当您不希望轮询事件触发您添加到公共(public)或默认运行循环的任何CADisplayLink时,这很有用。self.displayLink=CADisplayLink(target:self,selector:#selector(self.runT

ios - SDL 无法在 iPhone 5/6/6+ 上全屏显示

运行SDL的演示,我注意到iPhone5/5s和iPhone6/6Plus上的屏幕不是全尺寸显示。屏幕顶部和底部有黑条。无论选择什么手机模拟器,SDL显示320×480。这是SDL_uikitappdelegate.m的打印输出-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions{NSLog(@"Screensize:(%f,%f)",[UIScreenmainScreen].nativeBounds.size.width,[UIS

c++ - 将 SDL_PeepEvents 从 SDL 1.2.14 迁移到 SDL 1.3

我正在将使用SDL1.2框架用C++编写的OSX应用程序移植到使用SDL1.3框架的iOS。方法发生了一些变化,我在重写几段代码时遇到了麻烦。以下是1.2.14中SDL_PeepEvents方法的注释和声明:/***Checkstheeventqueueformessagesandoptionallyreturnsthem.**If'action'isSDL_ADDEVENT,upto'numevents'eventswillbeaddedto*thebackoftheeventqueue.*If'action'isSDL_PEEKEVENT,upto'numevents'events

iOS,FFmpeg 使用 UIimage 与 OpenGL 渲染视频

我有一个网络摄像机,可以通过RTSP流式传输h264视频。在iOS上,我使用FFmpeg捕获RTSP流并解码帧,然后使用UIimage和UIimageview进行渲染。我看过FFmpeg渲染视频的例子,好像都是用OpenGLES或者SDL库。我的问题是使用OpenGL有什么好处?因为使用UIimage进行渲染很容易,而且看起来工作正常。 最佳答案 SDL和OpenGL是可移植的跨平台标准这些库使用GPU处理数据。这对于图形处理非常有效,并且使您能够-例如-对视频应用实时过滤器。Apple提供CIImage用于在GPU上处理图像数据。

ios - SDL 和 iOS main() 方法冲突

我了解到SDL项目需要main()方法来运行循环,代码如下:#include"SDL.h"intmain(intargc,char*argv[]){if(SDL_Init(SDL_INIT_VIDEO)MILLESECONDS_PER_FRAME){delay=MILLESECONDS_PER_FRAME;}SDL_Delay(delay);}SDL_DestroyTexture(space);SDL_Quit();return0;}而iOS项目也需要main()方法,代码如下:#import#import"AppDelegate.h"intmain(intargc,char*argv