2013-02-05 1 views
0

SDL과 OpenGL로 작업하고 있습니다. SDL ttf를 사용하여 텍스트가있는 서페이스를 만든 다음 해당 서피스가있는 텍스처를 만듭니다. 나는 텍스트 알파 채널 (투명도)를 적용하기 위해 노력하고있어배경이없는 투명한 SDL_Surface

,이 방법을 사용하고 있습니다 : 불투명도가 제대로 적용

SDL_Surface * fontsurf = TTF_RenderUTF8_Blended(font,buff_split.at(i).c_str(),color); 
SDL_PixelFormat *format = fontsurf->format; 
SDL_Surface* newSurface = SDL_CreateRGBSurface(SDL_SRCALPHA, 
    fontsurf->w, fontsurf->h, 32, 
    0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); 


    Uint32 alpha = 0; 
    alpha = SDL_MapRGBA(newSurface->format, 0,0,0, color.unused); 

    SDL_Rect rect; 
    rect.x = 0; 
    rect.y = 0; 
    rect.h = fontsurf->h; 
    rect.w = fontsurf->w; 
    int ret = SDL_FillRect(newSurface, &rect, alpha); 

    SDL_SetAlpha(newSurface,SDL_SRCALPHA,SDL_ALPHA_TRANSPARENT); 

    ret = SDL_BlitSurface(fontsurf, 0, newSurface, 0); 

을하지만, SDL_MapRGBA는 검정색 배경을 만듭니다 " 새로운 표면 ". 배경을 추가하지 않고 텍스트에만 알파/불투명도를 적용 할 수 있습니까?

답변

2

newSurface에 대해 SDL_SetColorKey가 누락되었다고 생각합니다.

SDL_FillRect(newSurface, &rect, alpha); 
다음



는 예를 들어 어떻게이 같은

뭔가 :
이 제거

SDL_SetColorKey(newSurface , SDL_SRCCOLORKEY, SDL_MapRGB(newSurface->format, 0, 0, 0)); 


또는 쉽게 검은 사각형 newSurface을 작성 건너 뛸 것 나는 투명한 색으로 그림을 만든다 :

testImage = IMG_Load("trans.png"); 

는 // //이 사진은 제가 그 표면

위한 투명 컬러 255,0,255 설정

SDL_SetColorKey(testImage , SDL_SRCCOLORKEY, SDL_MapRGB(screen->format, 255, 0, 255)); 

투명하게 설정된다 컬러 255,0,255 포함

SDL_BlitSurface(testImage , NULL , screen , NULL); 

// 주 표면에 그립니다 (화면)

+0

감사합니다. 당신은 저에게 아주 좋은 아이디어를주었습니다. 이제 괜찮아요. – Spamdark

+0

남자, 여기에 도움이 필요합니다. 설정 한 색상 키가 작동하지 않습니다. 필 직사각형을 건너 뛸 때 블리트가 나에게 맞지 않습니다. – Spamdark

+0

코드를 보여주십시오. (그러나이 질문을 편집하지 마십시오.) –