Framebuffer has no alpha channel on iOS

I’m using backbuffer alpha for stencil based sun shadows. It works fine on Android and Windows, but on iOS the backbuffer is created with no alpha channel despite setting the alpha attribute to 4 or 8.

Code:
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 4);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);

gWindow = SDL_CreateWindow("Planet Droidia", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 0, 0, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN | SDL_WINDOW_RESIZABLE|SDL_WINDOW_ALLOW_HIGHDPI);

gContext = SDL_GL_CreateContext(gWindow);

renderer = SDL_CreateRenderer(gWindow, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE);

	int alphasize;
	SDL_GL_GetAttribute(SDL_GL_ALPHA_SIZE,&alphasize);

 // alphasize is 0 on iOS, 8 on Android.

Try setting the red/green/blue bit sizes to 8 as well.

1 Like