Switch 中使用 devkit pro 的简单 SDL2 c++ 程序未在模拟器中启动

问题描述

大家好,我是切换 Homebrew 开发的新手。我开始使用 SDL2 for Switch Homebrew。我已经下载并安装了 devout pro。并打开图形sdl2-simple example c++程序并编译它。它编译成功并生成一个 .nro 文件。然后我把它放到柚子模拟器中,它和joy con输入一起按预期工作正常。但是现在我需要使该程序更简单,以便它在模拟器中启动时更改 SDL 窗口的背景颜色。我通过删除不必要的方法(以特定模式绘制矩形的用户定义方法修改了示例代码,因为我的代码不需要它。然后我编译它,它编译成功并生成一个 .nro 文件。我还使用了原始 sdl2-simple 示例中的相同 Make 文件,因为我不知道如何创建 MakeFile。但是当我将它拖放到柚子模拟器中时,它会卡在启动进度条上。如何修改我的代码,使其在启动时更改窗口颜色。 代码在启动时更简单,它应该将窗口颜色设置为白色。这是我的代码。它完全编译成功并生成 .nro 文件。但是当我把它放在柚子里时,它卡在启动进度条屏幕上。我不知道我哪里错了

#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,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);
   
   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;
}

Compilation

Stuck in emulator

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)