elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con pantalla completa en SDL2(solucionado)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 3 Ir Abajo Respuesta Imprimir
Autor Tema: Problema con pantalla completa en SDL2(solucionado)  (Leído 9,996 veces)
jorge245

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Problema con pantalla completa en SDL2(solucionado)
« en: 21 Marzo 2018, 23:46 pm »

En el modo pantalla completa y SDL_WINDOW_FULLSCREEN_DESKTOP de SDL2 cuando  le pongo alguna imagen  a  la ventana (pantalla completa), al minimizarla y volver a entrar solo aparece una imagen de mi escritorio o  como fondo y nada más.Si es en FULLSCREEN sale la  imagen  con zoom.

Nota: Uso linux y para minimizar uso el botón de windows de mi teclado.


« Última modificación: 11 Mayo 2018, 19:35 pm por jorge245 » En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #1 en: 21 Marzo 2018, 23:52 pm »

pon tu código, pero si no estoy mal es porque no limpias el la SDL_surface que hace de pantalla


En línea

jorge245

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #2 en: 22 Marzo 2018, 00:00 am »

kenji:
Código:
#include<iostream>
#include"milib.h"
#include<SDL2/SDL.h>
#include<SDL2/SDL_image.h>
using namespace std;


int main(){
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *window = SDL_CreateWindow("pst",SDL_WINDOWPOS_UNDEFINED,SDL_WINDOWPOS_UNDEFINED,0, 0,SDL_WINDOW_FULLSCREEN_DESKTOP);
SDL_Surface*windowSurface=SDL_GetWindowSurface(window);
SDL_Surface*fondo=IMG_Load("fondo.png");
SDL_Event tecla;
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
while(true){
SDL_UpdateWindowSurface(window);
SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
while (SDL_PollEvent(&tecla)) {
if (tecla.type == SDL_QUIT) {
exit(0);
}
}
}
return 0;
}
este  programa lo hice para probar el modo pantalla completa
En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #3 en: 22 Marzo 2018, 00:08 am »

si lo que pensé en tu while solo estas capturando los eventos por eso el buffer se esucia que lo que estaba en la pantalla cuando lo minimizas y cundo lo maximizas te muestra eso
lo que tienes que hacer es un gameLoop que se encargue de limpiar el el buffer de la pantalla y lo pinte ademas desde dentro del gameLoop también podes capturar los eventos



disculpa esque no vi el primer while que hace de gameLoop XD el problema es el segundo while que tienes para capturar los eventos cámbialo por switch

[MOD] No hacer doble post, usar el botón "modificar" para añadir comentarios.
« Última modificación: 22 Marzo 2018, 00:25 am por simorg » En línea

jorge245

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #4 en: 22 Marzo 2018, 00:52 am »

El if lo cambio por switch?
si es así , por favor puedes explicarme porque usar switch en vez de if.
« Última modificación: 22 Marzo 2018, 00:56 am por jorge245 » En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #5 en: 22 Marzo 2018, 01:04 am »

con el switch(SDL_PollEvent(&tecla)) vas ha hacer un caso por cada evento
porlo tanto el if se combierte en un case:, en ete caso case: SDL_QUIT; breake;
En línea

jorge245

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #6 en: 22 Marzo 2018, 21:33 pm »

con el
Código:
switch(SDL_PollEvent(&tecla)){
case: SDL_QUIT; breake;
}
no me captura el evento. no se capturar eventos usando switch en SDL ayudame con eso.
En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #7 en: 22 Marzo 2018, 22:44 pm »

para que sea mas facil lo haremos haci

Código
  1. while (SDL_PollEvent(&tecla) != 0) {
  2.  if (tecla.type == SDL_QUIT) {
  3.   exit(0);
  4.  }
  5. }
  6.  

ya que
int SDL_PollEvent(SDL_Event* event)

es una funcion que devuelve 1 si hay un evento pendiente o 0 si no hay ninguno disponible.

y en el while cundo capturabas el evento te decía que quedaban eventos pendientes por
procesar de ese modo al no tratarlos el bucle se estancava dentro de sa parte del codigo

ademas te recomindo que agas una funcion booleana que te permita salir del gameLoop asi

Código
  1. bool quit = false;
  2.  
  3. while(!quit){
  4. SDL_UpdateWindowSurface(window);
  5. SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
  6. while (SDL_PollEvent(&tecla)) {
  7.  if (tecla.type == SDL_QUIT) {
  8.   quit = true;
  9.  }
  10. }
  11.  
  12. return 0;
  13.  

de ese modo no cierras la ejecución del programa inesperada mente, de esa forma dejas que la función main finalice correcta mente sin errores ademas de permitirte destruir los
SDL_Window *window
SDL_Surface*windowSurface
SDL_Surface*fondo

como es devido y no dejarlos almacenados en la memoria ram
« Última modificación: 22 Marzo 2018, 22:50 pm por Kenji-chan » En línea

jorge245

Desconectado Desconectado

Mensajes: 14



Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #8 en: 26 Marzo 2018, 19:37 pm »

no me funciona :,(
« Última modificación: 26 Marzo 2018, 20:26 pm por jorge245 » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Problema con pantalla completa en SDL2
« Respuesta #9 en: 26 Marzo 2018, 20:07 pm »

Has probado de hacer así:
Código
  1. bool quit = false;
  2.  
  3. while(!quit){
  4. SDL_UpdateWindowSurface(window);
  5. SDL_BlitSurface(fondo,NULL,windowSurface,NULL);
  6. while(SDL_PollEvent(&tecla)) {
  7.  if (tecla.type == SDL_QUIT) {
  8.    quit = true;
  9.  }
  10.  if(tecla.type == SDL_WINDOWEVENT_RESTORED) {
  11.    SDL_UpdateWindowSurface(window);
  12. }
  13.  
  14. return 0;
En línea

Páginas: [1] 2 3 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con pantalla completa¡¡¡
Multimedia
PERKER 2 2,124 Último mensaje 26 Mayo 2008, 07:55 am
por PERKER
como jugar en pantalla completa en una pantalla panorámica
Juegos y Consolas
blha 1 4,215 Último mensaje 18 Noviembre 2008, 09:34 am
por kabanya
Problema video pantalla completa!!!
Multimedia
Ganejash 3 3,790 Último mensaje 22 Abril 2009, 21:01 pm
por Songoku
problema con windows 7 y pantalla completa
Windows
pecks 1 4,506 Último mensaje 15 Agosto 2010, 16:53 pm
por madpitbull_99
[Solucionado]Programa en PyQt4 en modo Pantalla completa
Scripting
fortil 1 2,385 Último mensaje 31 Marzo 2013, 05:17 am
por fortil
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines