I was tying to write my first SDL2 program, I wanted to make movement possible, but it is very laggy
#include <iostream>
#include <SDL2/SDL.h>
#include <conio.h>
SDL_Window* window = SDL_CreateWindow("Dominiks window", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1024, 768, SDL_WINDOW_SHOWN);
SDL_Renderer* renderer = SDL_CreateSoftwareRenderer(SDL_GetWindowSurface(window));
SDL_Event event;
bool programrunning = true;
int posX = 0;
int posY = 0;
int directionX = 0;
int directionY = 0;
char ch;
void updateScreen(){
while(programrunning){
SDL_WaitEvent(&event);
if(event.type == SDL_QUIT){
programrunning = false;
}
SDL_SetRenderDrawColor(renderer,0,0,0,255);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer,255,0,0,255);
SDL_RenderDrawPoint(renderer, posX, posY);
SDL_UpdateWindowSurface(window);
if(kbhit()){
ch = _getch();
switch(ch){
case 'W':
case 'w':
directionY = -1;
directionX = 0;
break;
case 'A':
case 'a':
directionX = -1;
directionY = 0;
break;
case 'S':
case 's':
directionY = 1;
directionX = 0;
break;
case 'D':
case 'd':
directionX = 1;
directionY = 0;
break;
}
std::cin.sync();
}
std::cout << posX << " " << posY << std::endl;
posX += directionX;
posY += directionY;
}
}
int main(int argc, char **argv){
SDL_Init(SDL_INIT_EVERYTHING);
updateScreen();
return 0;
}
I have 2 questions: How do I make it less laggy? How do I make movement work while I'm not in the console?
I have tried writing less code into the loop, but it still remained laggy
Thanks everyone, the program now works fine, I just had to usd SDL_KEYDOWN
instead of kbhit()
and SDL_PollEvent(&event)
instead of SDL_WaitEvent(&event)