fix: Aplicar alpha del logo a través de vértices en lugar de textura
**Problema:** - SDL_SetTextureAlphaMod() no funciona correctamente con SDL_RenderGeometry() - El alpha de los vértices (hardcodeado a 1.0) overrideaba el alpha de textura - Resultado: fade invisible o instantáneo a pesar de valores correctos **Solución:** - Eliminar SDL_SetTextureAlphaMod() - Convertir alpha de 0-255 a 0.0-1.0 (alpha_normalized) - Aplicar alpha_normalized directamente al canal alpha de los 4 vértices - Ahora SDL_RenderGeometry respeta el fade correctamente **Archivos modificados:** - source/app_logo.cpp: - Línea 630: Crear alpha_normalized en lugar de SetTextureAlphaMod - Líneas 669, 680, 691, 702: Aplicar alpha_normalized a vértices **Resultado esperado:** - Fade visible y suave durante 2 segundos completos - Logo 2 con retraso de 0.25s como esperado - Sincronización perfecta entre animación y fade 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -627,7 +627,8 @@ void AppLogo::renderWithGeometry(int logo_index) {
|
||||
|
||||
// Aplicar alpha específico de cada logo (con retraso para logo2)
|
||||
int alpha = (logo_index == 1) ? logo1_alpha_ : logo2_alpha_;
|
||||
SDL_SetTextureAlphaMod(texture, static_cast<Uint8>(alpha));
|
||||
float alpha_normalized = static_cast<float>(alpha) / 255.0f; // Convertir 0-255 → 0.0-1.0
|
||||
// NO usar SDL_SetTextureAlphaMod - aplicar alpha directamente a vértices
|
||||
|
||||
// Calcular tamaño con escala y deformaciones aplicadas
|
||||
// (base_width y base_height ya están pre-escalados al tamaño correcto de pantalla)
|
||||
@@ -665,7 +666,7 @@ void AppLogo::renderWithGeometry(int logo_index) {
|
||||
float rotated_y = local_x * sin_rot + local_y * cos_rot;
|
||||
vertices[0].position = {center_x + rotated_x, center_y + rotated_y};
|
||||
vertices[0].tex_coord = {0.0f, 0.0f};
|
||||
vertices[0].color = {1.0f, 1.0f, 1.0f, 1.0f}; // Color blanco (textura se modula con alpha)
|
||||
vertices[0].color = {1.0f, 1.0f, 1.0f, alpha_normalized}; // Alpha aplicado al vértice
|
||||
}
|
||||
|
||||
// Vértice superior derecho (rotado)
|
||||
@@ -676,7 +677,7 @@ void AppLogo::renderWithGeometry(int logo_index) {
|
||||
float rotated_y = local_x * sin_rot + local_y * cos_rot;
|
||||
vertices[1].position = {center_x + rotated_x, center_y + rotated_y};
|
||||
vertices[1].tex_coord = {1.0f, 0.0f};
|
||||
vertices[1].color = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
vertices[1].color = {1.0f, 1.0f, 1.0f, alpha_normalized}; // Alpha aplicado al vértice
|
||||
}
|
||||
|
||||
// Vértice inferior derecho (rotado)
|
||||
@@ -687,7 +688,7 @@ void AppLogo::renderWithGeometry(int logo_index) {
|
||||
float rotated_y = local_x * sin_rot + local_y * cos_rot;
|
||||
vertices[2].position = {center_x + rotated_x, center_y + rotated_y};
|
||||
vertices[2].tex_coord = {1.0f, 1.0f};
|
||||
vertices[2].color = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
vertices[2].color = {1.0f, 1.0f, 1.0f, alpha_normalized}; // Alpha aplicado al vértice
|
||||
}
|
||||
|
||||
// Vértice inferior izquierdo (rotado)
|
||||
@@ -698,7 +699,7 @@ void AppLogo::renderWithGeometry(int logo_index) {
|
||||
float rotated_y = local_x * sin_rot + local_y * cos_rot;
|
||||
vertices[3].position = {center_x + rotated_x, center_y + rotated_y};
|
||||
vertices[3].tex_coord = {0.0f, 1.0f};
|
||||
vertices[3].color = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
vertices[3].color = {1.0f, 1.0f, 1.0f, alpha_normalized}; // Alpha aplicado al vértice
|
||||
}
|
||||
|
||||
// Índices para 2 triángulos
|
||||
|
||||
Reference in New Issue
Block a user