Buenas , tengo un problema al programar un movimiento con el teclado, estoy usando SDL con opengl y lo que quiero hacer es crear un cubo y moverlo en el eje x con las flechas del teclado.
Este es el codigo que tengo:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
#include <GL/glut.h>
#include <GL/gl.h>
#include <GL/glu.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
void error(char er[500]){
FILE *archivo;
archivo=fopen("ERRORES DEL PROGRAMA.txt","w");
if(archivo==NULL){
printf("FALLA AL CREAR ARCHIVO DE ERROR\n");
exit(1);
}else{
fprintf(archivo,"%s",er);
}
}
/* funcion para mover el objeto*/
void mover(int *x){
Uint8 *keys = SDL_GetKeyState(NULL);
if(keys[SDLK_LEFT]){
*x-=0.5;
}
if(keys[SDLK_RIGHT]){
*x+=0.5;
}
}
/* cubo*/
void cubo(int *px){
glTranslatef(*px,0,-5);
glutWireCube(1);
}
int main(int argc, char **argv){
SDL_Surface *pantalla;
SDL_Event event;
Uint8* keys = SDL_GetKeyState(NULL);
int done=0;
int videoFlags;
int cx=0;
if(SDL_Init(SDL_INIT_VIDEO)<0){
error("NO SE PUEDE INICIAR MODO DE VIDEO");
exit(1);
}
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER,1);
SDL_GL_SetAttribute(SDL_GL_RED_SIZE,5);
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE,6);
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE,5);
pantalla = SDL_SetVideoMode(600,500,16,SDL_OPENGL);
if(pantalla==NULL){
error("NO SE PUEDE CREAR PANTALLA");
exit(1);
}
glShadeModel(GL_SMOOTH);
glClearColor(0,0,0,0);
glClearDepth(1);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glViewport(0, 0, 600, 500);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(30,600/500,1,100);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
do{
if(SDL_PollEvent(&event)){
switch(event.type){
case SDL_KEYDOWN:
switch(event.key.keysym.sym){
case SDLK_ESCAPE: done = 1;
break;
default:
done = 0;
};
break;
case SDL_QUIT:
done = 1;
break;
}
}
mover(&cx);
cubo(&cx);
glLoadIdentity();
SDL_GL_SwapBuffers();
}while(!done);
return 0;
}
El problema es que no se que hago mal , porque no mueve nada.
Si alguien me pudiera ayudar le estaria agradecido.
Desde ya muchas gracias.
Saludos