SDL2的一般问题。 MacOS,Xode

我要做的是制作一个SDL程序,该程序可以在我创建的窗口中写入特殊符号。键盘可以在4层之间切换,每个层注册32个键。我只是不知道如何使某些东西真正出现在屏幕上,也不知道我在做什么错。

#include <iostream>
#include <SDL2/SDL.h>

int main(int argc,const char * argv[])
{
    //Setup
    bool quit = false;
    SDL_Event event;
    int z = 0;  //Layer
    int x = 0;
    int y = 0;

    //Init
    SDL_Init(SDL_INIT_VIDEO);
    SDL_Window * window = SDL_CreateWindow("TPKB",SDL_WINDOWPOS_CENTERED,960,640,SDL_WINDOW_SHOWN);
    SDL_Rect rect = {x,y,32,32};
    SDL_Renderer * renderer = SDL_CreateRenderer(window,-1,0);
    SDL_Surface * A_srf = SDL_LoadBMP("A.bmp"); SDL_Texture * A = SDL_CreateTextureFromSurface(renderer,A_srf); SDL_FreeSurface(A_srf);
    SDL_SetRenderDrawColor(renderer,255);


    //Events
    while (!quit)
    {
        SDL_WaitEvent(&event);
        switch (event.type)
        {
            case SDL_QUIT:
                quit = true;
                break;
            case SDL_KEYUP:
            {
                if(z == 0)
                {
                    switch(event.key.keysym.sym)
                    {
                        //case SDLK_1: SDL_BlitSurface(A_srf,NULL,surface,srfrect); break;
                        case SDLK_2: SDL_RenderCopy(renderer,A,&rect); if(x == 928){x = 0; y += 32;} else{x += 32;} rect.x = x; rect.y = y; SDL_RenderClear(renderer); SDL_RenderPresent(renderer); break;
                        case SDLK_LEFT: z = 1; std::cout << "1"; break;
                    }
                }
                if(z == 1)
                {
                    switch(event.key.keysym.sym)
                    {
                        case SDLK_UP: z = 0; std::cout << "0"; break;
                    }
                }
            }
        }
    }

    //Cleanup
    SDL_DestroyRenderer(renderer);
    SDL_DestroyTexture(A);
    SDL_DestroyWindow(window);
    SDL_Quit();

    return 0;
}

我曾尝试过移动渲染清晰的渲染当前内容,但似乎根本没有激活它。

yiliang123 回答:SDL2的一般问题。 MacOS,Xode

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3043324.html

大家都在问