Jump to content
  • Advertisement

SDL_jesse

Member
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

100 Neutral

About SDL_jesse

  • Rank
    Newbie
  1. not only size , I have to flip the image also and some other things according to the game logic . Can I use putPiexl() and getPiexl() to do this?
  2. thank you for that , but I should change the size of the image ,so I can't use SDL_BlitSurface() to do this in my game.I have to draw it pixel by pixel. the code above can work with PNG-8 ,but it can't work with PNG-24 or PNG-32
  3. sorry , I am a freshman in SDL ,it does not help,the main code is here,: [color=#0000cd]int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *pScreen = ::SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE | SDL_DOUBLEBUF); SDL_Surface *image = IMG_Load("jbutton.png"); SDL_SetAlpha(image, SDL_SRCALPHA, SDL_ALPHA_TRANSPARENT); SDL_Surface *screen = SDL_DisplayFormatAlpha(image); for(int i=0;i<image->w;i++) { for(int j=0;j<image->h;j++) { Uint32 color=getPixel(screen,i,j); putPixel(pScreen,i,j,color); } } // SDL_BlitSurface(img, 0, video, 0); //this will be ok SDL_Flip(pScreen); SDL_Delay(5000); SDL_Quit(); return 0; }
  4. Does any one has ideas about it ? thank you for your reply!
  5. I created a png in photoshop with a transparent background, and when I load up the png it has transparency. But when I load it into my game using SDL_image it appears white where it should be transparent.I am not use SDL_BlitSurface(),I use getPiexl() and putPiexl() instead,here is my code: [color=#0000cd]#include <iostream> #include <string> #include "SDL/SDL_image.h" using namespace std; void putPixel(SDL_Surface *surface, int x, int y, Uint32 pixel) { int bpp = surface->format->BytesPerPixel; /* Here p is the address to the pixel we want to set */ Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp; switch(bpp) { case 1: *p = pixel; break; case 2: *(Uint16 *)p = pixel; break; case 3: if(SDL_BYTEORDER == SDL_BIG_ENDIAN) { p[0] = (pixel >> 16) & 0xff; p[1] = (pixel >> 8) & 0xff; p[2] = pixel & 0xff; } else { p[0] = pixel & 0xff; p[1] = (pixel >> 8) & 0xff; p[2] = (pixel >> 16) & 0xff; } break; case 4: *(Uint32 *)p = pixel; break; } } Uint32 getPixel(SDL_Surface *surface, int x, int y) { int bpp = surface->format->BytesPerPixel; /* Here p is the address to the pixel we want to retrieve */ Uint8 *p = (Uint8 *)surface->pixels + y * surface->pitch + x * bpp; switch(bpp) { case 1: return *p; case 2: return *(Uint16 *)p; case 3: if(SDL_BYTEORDER == SDL_BIG_ENDIAN) return p[0] << 16 | p[1] << 8 | p[2]; else return p[0] | p[1] << 8 | p[2] << 16; case 4: return *(Uint32 *)p; default: return 0; /* shouldn't happen, but avoids warnings */ } } int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_VIDEO); SDL_Surface *pScreen = ::SDL_SetVideoMode(640, 480, 0, SDL_SWSURFACE | SDL_DOUBLEBUF); SDL_Surface *image = IMG_Load("jbutton.png"); SDL_DisplayFormatAlpha(image); for(int i=0;i<image->w;i++) { for(int j=0;j<image->h;j++) { Uint32 color=getPixel(image,i,j); putPixel(pScreen,i,j,color); } } // SDL_BlitSurface(img, 0, video, 0); //this will be ok SDL_Flip(pScreen); SDL_Delay(5000); SDL_Quit(); return 0; }
  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!