我要做的是制作一个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;
}
我曾尝试过移动渲染清晰的渲染当前内容,但似乎根本没有激活它。