无法创建SDL_Window,即使包含了SDL_Main.h,也会出现错误。
我正在尝试使用ffmpeg(获取,decoding.etc)播放网络流,并尝试使用SDL渲染它. 当我运行应用程序时,它正常启动,但是一旦我调用OpenFile(),它包含用于打开网络流并创建sdl_window的代码,然后是sdl_renderer,但它在SDL_CreateWindow()上给了我一个错误. Window not created: [Application didn't initialize properly, did you include SDL_main.h in the file containing your main() function?]. 即使我包括SDL_main.h. #include #include ..... //other header files #define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG
2 2024-02-17
编程技术问答社区
JNI调用非静态函数时出现故障
我正在使用Android的SDL库进行一些工作,但我有一点障碍. 此功能在Java中定义: /** * This method is called by SDL using JNI. * @return an array which may be empty but is never null. */ public static int[] inputGetInputDeviceIds(int sources) { int[] ids = InputDevice.getDeviceIds(); int[] filtered = new int[ids.length]; int used = 0; for (int i = 0; i
0 2024-02-17
编程技术问答社区
SDL2样本在android ndk r14下的构建错误
我已经在我的Ubuntu 16.04机器上测试了在SDL2源(2.0.5)中构建样品. 根据 https://wiki.libsdl.org/android ,我安装了Android Sdk and android sdk and android sdk and im NDK R14并设置我的环境变量. ,但我未能在"简单构建"章中使用以下命令进行构建. cd /usr/src/SDL2/build-scripts/ ./androidbuild.sh org.libsdl.testgles ../test/testgles.c 它会出现以下错误. Error: The project either has no target set or the target is invalid. Please provide a --target to the 'android update' command. [armeabi] Compile thumb : S
0 2024-02-17
编程技术问答社区
为什么SDL_Window是一个不完整的类型?
我正在移植到SDL2和Android平台使用SDL 1.2的C ++游戏.除了一件事以外,一切都很好:当我尝试访问SDL_Window的字段时,编译器告诉我 error: invalid use of incomplete type 'SDL_Window {aka struct SDL_Window}' 我认为我的SDL安装可能是错误的.我使用folloing命令从libsdl.org上找到的源编译了SDL 2.0.0: ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=./Android.mk APP_PLATFORM=android-18 然后,我将新鲜构建的libSDL2.so复制到$ANDROID_TOOLCHAIN/sysroot/usr/lib中,以及$ANDROID_TOOLCHAIN/sysroot/usr/include/SDL中include/目录中的文件.这些文件被提供给CMAKE,并由游戏代码引用.我
0 2024-02-09
编程技术问答社区
这个画线算法能不能被优化?
对于我一直从事的项目,能够用梯度绘制线路的能力(即它们在绘制的间隔上更改颜色)将非常有用.我有一个算法,正如我在下面粘贴的那样,但事实证明这很慢.我正在使用Bresenham算法来找到每个点,但我担心自己已​​经达到了软件渲染的限制.到目前为止,我一直在使用SDL2,并且我的线图算法比SDL_RenderDrawLine慢200倍.这是一个估计值,从比较两个函数的时间到绘制10,000行.我的功能将需要接近500ms,SDL_RenderDrawLine在我的机器上以2-3ms的速度进行了功能.我什至用水平线测试了功能,以确保它不仅仅是bot骨的布雷森汉姆算法,并且孵化了类似的慢性.不幸的是,SDL没有用于绘制梯度线的API(或者如果确实如此,我是盲人).我知道任何软件渲染都比硬件要慢得多,但是慢速的剪切幅度使我感到惊讶.是否可以使用一种方法来加快速度?我只是毫无理由地打破了绘图系统吗?我已经考虑过保存我希望绘制的像素阵列,然后一次将它们推到屏幕上,但是我不知道如何使用SDL2进行此操作
6 2024-01-23
编程技术问答社区
通过DeltaTime进行精灵序列控制
以前在我游戏的主要循环中,时间以60 fps进行管理,并且时间延迟的延迟相应. 精灵序列的动画如下: if(++ciclos > 10){ siguienteSprite++; ciclos = 0; } 鉴于我正在使用三级节目使用平滑运动,因此我从主周期中消除了延迟.使动画的精灵循环更快,不仅如此,而且每个序列之间的时间也有所不同. 有人可以给我一个问题,只有这个问题的逻辑,事先谢谢您. :) 解决方案 delay在主循环中并不是真正的好方法(因为它没有考虑到主循环中其他内容所需的时间).当您删除延迟时,速度会更大,并且会变化更多,因为主循环时机中的其他内容更为重要,并且通常不恒定,原因是: : OS 粒度 与GFX卡/驱动程序同步 非恒定处理时间 还有更多方法可以处理以下方法: 测量时间 t1=get_actual_time(); while (t1-t0>=animatio
0 2024-01-22
编程技术问答社区
如何显示插播广告?
如何显示间质广告? @Override protected void onCreate(Bundle savedInstanceState) { //Log.v("SDL", "onCreate()"); super.onCreate(savedInstanceState); setContentView(R.layout.main); interstitial = new InterstitialAd(this); interstitial.setAdUnitId("ca-app-pub-2188258702xxxxxxxxxxx"); AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
2 2024-01-19
编程技术问答社区
SDL2和三维渲染
SDL2是否可以在3D(即制作立方体,球形等)中渲染事物,而无需使用OpenGL,或者仅具有2D功能? 解决方案 您的问题最好在 gamedev stackexchange 中,但是简单地回答您的问题:SDL2本身 no 渲染3D对象的功能.这也在 sdls上 page: 简单的DirectMedia层是一个跨平台开发库,旨在通过OpenGL和Direct3D 提供低级访问音频,键盘,鼠标,操纵杆和图形硬件 SDL提供了一些功能来帮助您减轻OpenGL的使用,但是您必须学习和使用OpenGL才能允许渲染2D和3D矢量图形. 我建议SDL的基础知识的一个好教程是 this 网站.它只有一些与OpenGL使用有关的章节,但是如果您没有使用SDL太多,这是一个很好的开始. 其他解决方案 这是Wiki所说的: 对于诸如粒子效应或实际3D的高级功能,您应该使用SDL的OpenGL/Direct3D支持或许多可用的3D发动机之一. SDL并不是要提供3D
0 2024-01-08
编程技术问答社区
在Box2D中一米是多少像素?
问题很简单,所以没有代码!如果有人知道Box2D和SDL2,请告诉我如何与B2Body包裹SDL_RECT.当然,它需要知道仪表向像素的转换,反之亦然.这是因为Box2D以米为单位的距离.您能给我一个简单的表达式或功能,以将(box2d的)仪表转换为像素或像素为米(box2d)? 解决方案 您可以给我一个简单的表达方式或功能,以将(Box2D的)转换为像素或像素到米(Box2D)? 不幸的是,这对我们来说并不像听起来那样简单.因为,如果您的游戏在蠕虫上,那么您的游戏世界将是毫米,而如果就像太空侵略者那将以公里为单位?因此,由游戏设计师决定这个扩展因素.在不了解游戏的复杂性的情况下,推论这个因素充其量只是一个疯狂的猜测. 来自 box2d的常见问题: 如何将像素转换为米? 假设您有一个100x100像素的字符的精灵.您决定使用0.01的缩放系数.这将使角色物理框1M x 1m.因此,去做一个1x1的物理盒.现在假设字符从像素坐标(345,679)开始.因
2 2024-01-08
编程技术问答社区
使用SDL 2运行应用程序时,Xcode 5崩溃了
我试图遵循这两个教程(或由于版本差异而适用的部分)以安装SDL 2.0.2以使用Xcode 5.1: 教程1 教程2 使用SDL 2框架链接的任何程序都会导致Xcode崩溃,以下问题详细信息: Process: Xcode [1787] Path: /Applications/Xcode.app/Contents/MacOS/Xcode Identifier: com.apple.dt.Xcode Version: 5.1 (5084) Build Info: IDEFrameworks-5084000000000000~21 App Item ID: 497799835 App External ID: 444172641 Code Type: X86-64 (Native) Parent Process: launchd [257] Responsibl
2 2023-12-20
编程技术问答社区
Xcode 13 在构建失败时提示 "entry point (_main) undefined. for architecture arm64"
我正在尝试构建我已经构建了几年的SDL(libsdl.org)iOS应用程序,而我遇到了一些问题. 具有以下设置: 我得到的错误是: ld:警告:忽略file/users/username/library/developer/xcodeer/xcode/deriveddata/appname-acpmwonxbccjqtaxaenqtaxaenqojducdea/build/build/build/build/products/products/products/debug-iphonesimimulator-sim simimimulator-ribappappappappabpappneft ARM64,但试图与为iOS Simulator-X86_64 构建的文件链接 ld:入口点(_main)未定义.用于建筑ARM64 我不确定第一个警告是否与错误有关. 我有一个带有SDL源文件的存档的目标. 如果我将ARM64添加到"排除架构"(基于其他Stackover
2 2023-12-19
编程技术问答社区
XCode上安装SDL2
我从 https://wwww.libsdl.org.org.org.org.org.org 中下载了sdl2.frameworks库/框架/.然后,我指出了Xcode在"构建设置","常规"''框架和库中的框架和标题的路径,指向框架文件libsdl2-2.0.0.0.dylib. i type #include 尝试构建项目.它显示了150多个警告,但是如果我尝试运行程序,则说库未加载.为什么?问题是什么?我正在使用大型Sur OS 解决方案 我已经弄清楚了. 我已经从 https://brew.sh.sh.sh 我在终端中键入brew install sdl2 然后,我显示了框架的路径(在Xcode中选择项目文件>>构建设置>>标题搜索路径),并使用cmd+shift+g type/usr/local/local/include/include 在一般框架和图书馆中,请放置libsdl2-2.0.0.dylib(此处 /USR/local/cellar/sdl2/2.0
6 2023-12-19
编程技术问答社区
Kivy误差-��无法获取窗口,中止��
我在Raspberry PI3上安装了Kivy,在那里我运行了一个已经在另一个PI3上使用的Python程序. 我现在正在尝试在第二个PI上安装相同的内容,但它行不通...也许我忘记了一些东西,但我认为我做了与以前相同的步骤. kivy确实安装得很好,就像python程序的其他软件包一样. 此处以下错误: pi@raspberrypi:~ $ python pi4.py [INFO ] [Logger ] Record log in /home/pi/.kivy/logs/kivy_17-01-19_4.txt [INFO ] [Kivy ] v1.9.2-dev0 [INFO ] [Python ] v2.7.9 (default, Sep 17 2016, 20:26:04) [GCC 4.9.2] [INFO ] [Factory ] 193 symbols loaded [INFO ] [Im
8 2023-12-15
编程技术问答社区
SDL2无法创建窗口,因为它无法找到匹配的GLX视觉。
我当前在Windows 10上运行Ubuntu Terminal时有问题.我还将Xming安装为我的X-Server(我将Xming用于QEMU等...).我正在尝试运行此SDL2程序.因此,我有这个用于main.cpp: #include #include #include #include #include int main(int argc, char *argv[]) { int final_status = 1; SDL_Window *window; SDL_GLContext openGL_context; if (SDL_Init(SDL_INIT_VIDEO)) { fprintf(stderr, "Unable to initial
2 2023-12-09
编程技术问答社区
如何解决SDL2中移动窗口时程序冻结的问题?
我正在与朋友一起制作一个小型游戏,一个问题是,当您拖动窗户时,它会冻结,并且该程序完全停止,直到您放开为止.我搜索了一个简单的解决方案,但我发现它发生在所有事物中.另外,由于它的作用像是一个非常长的框架,因此它会拧紧三角洲的时间.有什么办法可以使程序在移动时继续运行,或者如果太复杂,请修复三角洲时间?谢谢? 解决方案 您的应用程序很可能是"冻结"的,因为它具有与此类似的温曼环路: while (true) { if(PeekMessage(&msg,NULL,0,0,PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); } else { TickGame(); } } 因此,而不是打勾,而是处理 wm_move消息.一项简单的工作将只是在移动消息中调用您的游戏滴答功能,或者,如果您收到第一次移动消息并暂停游戏
0 2023-12-07
编程技术问答社区
在Win10上用VS2015编译的C++ SDL2程序中调试加载时间错误
我使用Visual Studio 2015在64位Windows 10上使用SDL2在C ++中编写一个项目.我最近购买了一台新的Windows 10笔记本电脑,并将我的项目从Github克隆了.我的项目正确编译,但是运行时会收到以下错误: 该应用程序无法正确启动(0xc000007b).单击确定关闭应用程序. 基于我的研究,此错误通常是由于加载不兼容的DLL而引起的,例如64位版本而不是32位.到目前为止,我发现的建议包括: 检查我正在使用SDL2 DLLS的32位版本 安装/重新安装Visual C ++的X86版本可用于Visual Studio 2015 使用 我的项目设置为Win32构建,并且我确保我正在使用我明确链接的所有DLL的32位版本(libfreetype-6,libpng16-16,sdl2,sdl2_image,sdl2_mixer,sdl2_mixer,sdl2_mixer,和SDL2_TTF).我已经确认X86 VC ++重新分布可安装
6 2023-12-07
编程技术问答社区
如何在 SDL 2 程序运行时向控制台打印?
在运行我的SDL 2程序时,我想将一些调试的内容打印到控制台上,但这似乎是不可能的. printf("Hi!\n")和SDL_Log("Hi!\n")俩都不会对我有任何好处. 我什至在初始化SDL之前尝试打印(也是在退出后),但无济于事.似乎只是导入 SDL库使得无法将任何内容打印到控制台. 这是我要编译的参数,因为有可能与它有关: g++ hello.cc -IC:\mingw_dev_lib\include\SDL2 -LC:\mingw_dev_lib\lib -w -Wl,-subsystem,windows -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -std=c++11 有什么想法? 解决方案 所以,我想出了什么阻止了我看到输出.这些编译选项 -Wl,-subsystem,windows 本质上禁用控制台窗口,以防止输出显示.这对游戏结束是有好处的,但可用于调试.因此,我继续删除了这些编译选项,现
2 2023-12-06
编程技术问答社区
"对`FT_Load_Glyph'的未定义引用 "以及其他使用CMAKE的SDL2_ttf函数
在Windows 10上使用此cmake-file(使用mingw 5.0): cmake_minimum_required(VERSION 3.3) project(ClionProjects) # configure the SDL (cf. "SDL2-2.0.3\i686-w64-mingw32\lib\pkgconfig\sdl2.pc") # C++ flags set(SDL2_Flags "-mwindows -Wl,--no-undefined -static-libgcc") # library paths set(SDL2_ROOT "C:/SDL2/i686-w64-mingw32") set(SDL2_Includes "${SDL2_ROOT}/include") set(SDL2_LibDir "${SDL2_ROOT}/lib") # imported targets for CMake (cf. https://cmake.org/W
22 2023-12-05
编程技术问答社区
SDL2 提升窗口而不赋予其焦点
我需要在窗口上显示一个工具提示.我正在使用工具提示创建第二个窗口,并使用SDL_RAISEWINDOW()将其置于顶部.但是,这样做会导致工具提示窃取焦点,这不是我想要的.有没有一种方法可以将窗户带到顶部而不改变重点? 另外,是否有一种方法可以设置焦点(鼠标和/或键盘),而无需更改窗口的z顺序? 解决方案 Neil 提供的答案仅在X11 下起作用,因为SDL_SetWindowInputFocus()仅在该环境中实现.从本质上讲,所需的行为是无法实现的.我已经看到,在SDL论坛中有一个功能请求,以使SDL_RaiseWindow()函数过载,以包含一个可选的bool参数,以指示提高窗口是否还应接收输入焦点.我希望他们做实现这一目标. 无论如何,SDL 2.x下多个窗口的支持有些弱.没有内置支持不同窗口的Z阶,并且试图根据"画家的方法"来构建一个窗口,但对输入焦点没有任何控制. 其他解决方案 旧问题,但这在我自己的搜索过程中出现了.您可以尝试SDL_RaiseW
2 2023-12-04
编程技术问答社区
SDL2 如何在第二个显示器上定位一个窗口?
我正在使用SDL_SetWindowPosition将窗户放置.我可以使用此功能将窗口放在另一个显示器上? 更新 使用SDL_GetDisplayBounds在Windows 10中更改文本大小时,不会返回正确的显示器位置.任何想法如何解决此问题? 解决方案 SDL2使用全局屏幕空间坐标系.每个显示设备在此坐标空间内都有自己的边界.以下示例将窗口放在第二个显示设备上: // enumerate displays int displays = SDL_GetNumVideoDisplays(); assert( displays > 1 ); // assume we have secondary monitor // get display bounds for all displays vector displayBounds; for( int i = 0; i
6 2023-12-04
编程技术问答社区