c++ - Switch中使用devkit pro的简单SDL2 c ++程序无法在模拟器中启动
问题描述
大家好,我是切换 Homebrew 开发的新手。我从 Switch Homebrew 的 SDL2 开始。我已经下载并安装了 devout pro。并打开graphics sdl2-simple example c++ program并编译。它编译成功并生成一个 .nro 文件。然后我将它放到 Yuzu 模拟器中,它与 Joy con 输入一起按预期工作。但现在我需要使该程序更简单,以便它在模拟器中启动时更改 SDL 窗口的背景颜色。我通过删除不必要的方法(以特定模式绘制矩形的用户定义方法)修改了示例代码,因为我的代码不需要它。然后我编译它编译成功并生成一个 .nro 文件。而且我使用原始 sdl2-simple 示例中的相同 Make 文件,因为我不知道如何创建 MakeFile。但是当我将它拖放到柚子模拟器中时,它会卡在启动进度条上。如何修改我的代码,以便在启动时更改窗口颜色。代码在启动时更简单,它应该将窗口颜色设置为白色。这是我的代码。它完全编译成功并生成 .nro 文件。但是当我把它放在 Yuzu 中时,它卡在启动进度条屏幕上。我不知道我哪里错了
#include <stdlib.h>
#include <stdio.h>
#include<iostream>
#include <SDL.h>
#include<SDL2/SDL.h>
int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window* Window = NULL;
Window = SDL_CreateWindow("demo",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,800,450,SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL);
if(Window == NULL)
{
std::cout<<"Error in window initialization\n"<<SDL_GetError()<<"\n";
return -1;
}
for (int i = 0; i < 2; i++) {
if (SDL_JoystickOpen(i) == NULL) {
SDL_Log("SDL_JoystickOpen: %s\n", SDL_GetError());
SDL_Quit();
return -1;
}
}
SDL_Surface* Screen = SDL_GetWindowSurface(Window);
bool running = true;
SDL_Event event;
Uint32 white = SDL_MapRGB(Screen->format,255,255,255);
SDL_FillRect(Screen,NULL,white);
SDL_UpdateWindowSurface(Window);
while (running)
{
while (SDL_PollEvent(&event))
{
if(event.type == SDL_QUIT)
{
running = false;
break;
}
}
}
SDL_DestroyWindow(Window);
SDL_Quit();
return 0;
}
解决方案
推荐阅读
- php - 如何在 JWT API - Laravel 5.8 上验证用户群?
- verilog - 在“Verilog”中创建具有单输入/输出数据端口的“RAM”芯片
- android - 服务和唤醒锁
- nginx - 如何在 nginx 中将两个域名指向一个网站
- amazon-web-services - 我如何备份 s3 或者是否可以备份 s3?
- xamarin - 保存在数据库中的图像未显示在 Xamarin Forms 应用程序的 Home.xaml 页面中
- reactjs - React onChange 不能被 AJAX 数据触发
- c - GDB C如何打印VLA条目(动态数组)
- javascript - 如何立即执行回调或强制按顺序执行 - 没有承诺,没有异步
- php - 雄辩的多对多关系总是空的