Foros del Web » Programación para mayores de 30 ;) » C/C++ »

mover objeto con teclado (openGL + SDL)

Estas en el tema de mover objeto con teclado (openGL + SDL) en el foro de C/C++ en Foros del Web. Buenas , tengo un problema al programar un movimiento con el teclado, estoy usando SDL con opengl y lo que quiero hacer es crear un ...
  #1 (permalink)  
Antiguo 13/08/2006, 00:02
Avatar de diegoag1  
Fecha de Ingreso: marzo-2004
Ubicación: El Pinar
Mensajes: 164
Antigüedad: 20 años, 9 meses
Puntos: 0
mover objeto con teclado (openGL + SDL)

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
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:53.