MCPcopy Create free account
hub / github.com/RavEngine/RavEngine / DrawComposite

Function DrawComposite

deps/SDL2/test/testrendertarget.c:98–179  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

96}
97
98SDL_bool
99DrawComposite(DrawState *s)
100{
101 SDL_Rect viewport, R;
102 SDL_Texture *target;
103
104 static SDL_bool blend_tested = SDL_FALSE;
105 if (!blend_tested) {
106 SDL_Texture *A, *B;
107 Uint32 P;
108
109 A = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, 1, 1);
110 SDL_SetTextureBlendMode(A, SDL_BLENDMODE_BLEND);
111
112 B = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, 1, 1);
113 SDL_SetTextureBlendMode(B, SDL_BLENDMODE_BLEND);
114
115 SDL_SetRenderTarget(s->renderer, A);
116 SDL_SetRenderDrawColor(s->renderer, 0x00, 0x00, 0x00, 0x80);
117 SDL_RenderFillRect(s->renderer, NULL);
118
119 SDL_SetRenderTarget(s->renderer, B);
120 SDL_SetRenderDrawColor(s->renderer, 0x00, 0x00, 0x00, 0x00);
121 SDL_RenderFillRect(s->renderer, NULL);
122 SDL_RenderCopy(s->renderer, A, NULL, NULL);
123 SDL_RenderReadPixels(s->renderer, NULL, SDL_PIXELFORMAT_ARGB8888, &P, sizeof(P));
124
125 SDL_Log("Blended pixel: 0x%8.8X\n", P);
126
127 SDL_DestroyTexture(A);
128 SDL_DestroyTexture(B);
129 blend_tested = SDL_TRUE;
130 }
131
132 SDL_RenderGetViewport(s->renderer, &viewport);
133
134 target = SDL_CreateTexture(s->renderer, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_TARGET, viewport.w, viewport.h);
135 SDL_SetTextureBlendMode(target, SDL_BLENDMODE_BLEND);
136 SDL_SetRenderTarget(s->renderer, target);
137
138 /* Draw the background.
139 This is solid black so when the sprite is copied to it, any per-pixel alpha will be blended through.
140 */
141 SDL_SetRenderDrawColor(s->renderer, 0x00, 0x00, 0x00, 0x00);
142 SDL_RenderFillRect(s->renderer, NULL);
143
144 /* Scale and draw the sprite */
145 s->sprite_rect.w += s->scale_direction;
146 s->sprite_rect.h += s->scale_direction;
147 if (s->scale_direction > 0) {
148 if (s->sprite_rect.w >= viewport.w || s->sprite_rect.h >= viewport.h) {
149 s->scale_direction = -1;
150 }
151 } else {
152 if (s->sprite_rect.w <= 1 || s->sprite_rect.h <= 1) {
153 s->scale_direction = 1;
154 }
155 }

Callers 1

loopFunction · 0.85

Calls 12

SDL_CreateTextureFunction · 0.85
SDL_SetTextureBlendModeFunction · 0.85
SDL_SetRenderTargetFunction · 0.85
SDL_SetRenderDrawColorFunction · 0.85
SDL_RenderFillRectFunction · 0.85
SDL_RenderCopyFunction · 0.85
SDL_RenderReadPixelsFunction · 0.85
SDL_LogFunction · 0.85
SDL_DestroyTextureFunction · 0.85
SDL_RenderGetViewportFunction · 0.85
SDL_RenderPresentFunction · 0.85

Tested by

no test coverage detected