• Advertisement


  • Content count

  • Joined

  • Last visited

Community Reputation

107 Neutral

About zealotscout

  • Rank
  1. OpenGL Opengl + SDL Sprite animation.

    Forgot to mention, before I get a law suit. I've been using some of NeHes code and lazyfoo's code to get my project running. If that helps any way.
  2. Hello everyone on gamedev, Currently a new programmer to open gl working on a University proyect which revolves around making a short 1min~2min video. My main source of animation is flipping through frames on various sprites sheets via translating gltextcoords and placing them onto a given quad. Everything would be cool and all but i've got a few problems. My video involves a scrolling background, and character walking in place; The scene is simulating the character walking and the background moves accordingly. So... basically I have no idea how I'll get both sprites to move at the same time. Also, I'm using sdl_image with my sprites so I can get some transparencies. Another problem arises is when I shift through frames on a walk cycle. Each frame is printed on screen, then over written by the next but all the past frames are printed. All I want showing is the current frame and not all the others at the same time. I'll post some pics describing my issues. In a nut shell I need help on. 1st.Making a background scroll while at the same time playing a walk cycle of a character in front of it. 2nd. Whilst the character is doing his walk sequence, I need to only display the current frame and not all the rest. This is the code I'm using to create the "animations" the walk cycle void malecycle1() { malewalk = loadTexture("walkcyclefinal.png"); glBindTexture(GL_TEXTURE_2D,malewalk); for(float add=0.00;add<1.00;add=add+0.0625) {//glClear( GL_COLOR_BUFFER_BIT ); glBegin(GL_QUADS); // se comienza el dibujado del quad que contiene la imagen glTexCoord2f( +add, 0 ); // coordenada proporcional a lo que se va mostrar en pantalla glVertex3f( 0 ,144, 0 ); // Bottom-left vertex (corner) glTexCoord2f( 0.0625+add, 0 ); glVertex3f(256 ,144, 0 ); // Bottom-right vertex (corner) glTexCoord2f( 0.0625+add, 1 ); glVertex3f(256 , 400, 0 ); // Top-right vertex (corner) glTexCoord2f( +add, 1 ); glVertex3f( 0 , 400, 0 ); glEnd(); SDL_Delay(100 ); SDL_GL_SwapBuffers(); // glDeleteTextures( 1, &texture3 ); } } scrolling background GLuint texture; // Texture object handle SDL_Surface *surface; // Gives us the information to make the texture // if ( (surface = SDL_LoadBMP("sprite.bmp")) ) { surface = SDL_LoadBMP("background22edit.bmp") ; // Check that the image's width is a power of 2 glGenTextures( 1, &texture ); // Bind the texture object glBindTexture( GL_TEXTURE_2D, texture ); // Set the texture's stretching properties glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR ); glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); // Edit the texture object's image data using the information SDL_Surface gives us glTexImage2D( GL_TEXTURE_2D, 0, 3, surface->w, surface->h, 0, GL_BGR, GL_UNSIGNED_BYTE, surface->pixels ); glBindTexture( GL_TEXTURE_2D, texture ); for(float x= 0;x<1.0;x=x+0.025) { glBegin(GL_QUADS); // se comienza el dibujado del quad que contiene la imagen glTexCoord2f( x, 0 ); // coordenada proporcional a lo que se va mostrar en pantalla glVertex3f( 0,0, 0 ); // Bottom-left vertex (corner) glTexCoord2f( .3333+x, 0 ); glVertex3f( 640,0, 0 ); // Bottom-right vertex (corner) glTexCoord2f( .3333+x, 1 ); glVertex3f(640, 480, 0 ); // Top-right vertex (corner) glTexCoord2f( x, 1 ); glVertex3f( 0, 480, 0 ); glEnd(); SDL_Delay(150); SDL_GL_SwapBuffers(); } // glutSwapBuffers(); } Any help will be much appreciated and I hope this wall of text is correctly placed within this forum. Thanks in advance.
  • Advertisement