¡Buenas! Pues tan simple como eso. Al iniciar en pantalla completa, se ve todo el juego en negro y no se ve nada... tanto si inicia desde la opción del menú, como si inicia en modo ventana y manualmente la activo. En modo ventana todo se ve perfectamente. He comprobado que los objetos están ahí porque cierto evento sí reacciona, así que parece ser sólo visual, pero no sé qué hacer.
Puedes indicarnos el modo en que haces cambios de resolución de pantalla. Por ejemplo, podrías decirnos la parte del código que realiza dicho cambio. También podrías decirnos si has usado algún código que implica a application_surface.
Dándonos más información sabremos responderte mejor.
Sube el proyecto compilado para hacer pruebas. Si a otros les funciona bien, tal vez es un problema con el controlador de video.
Hum, lo de subirlo compilado creo que me gustaría dejarlo como última opción... y en caso que no se encontrara otra cosa, localizar si mi controlador de vídeo tiene algún problema y resolverlo, pues lo debería hacer igual. Pero juego a muchos juegos en mi PC y nunca me ha fallado.
Pues desactivo la fullscreen automática desde las opciones. Nunca uso application_surface. En create del objeto controlador:
// Inicializamos el 3D
d3d_start(); // Iniciamos el modo 3D
d3d_set_lighting(false); // Habilita el uso de iluminación
d3d_set_perspective(true); // Habilita el uso de perspectivas 3D
d3d_set_hidden(true); // Sólo dibujará lo que se ve para ahorrar memoria
d3d_set_culling(true); // Sólo dibujará las caras frontales para ahorrar memoria
d3d_set_zwriteenable(true); // Pa k no pete
draw_set_alpha_test(true); // Para que lo transparente al frente permita ver lo de detrás
draw_set_alpha_test_ref_value(254); // Para resolver las líneas negras outline de los sprites transparentes
// de 0 a 255, indica que sólo mostrará los píxeles de opacidad superior a la indicada, exclusive.
// Opciones de pantalla
window_set_size( display_get_width(), display_get_height() );
window_set_position( 0, 0 );
view_wview[0] = display_get_width();
view_hview[0] = display_get_height();
view_wport[0] = view_wview[0];
view_hport[0] = view_hview[0];
window_set_fullscreen( true );
En draw del controlador, que tiene depth=1000
d3d_set_projection( obPer.x, obPer.y, 1500, obPer.x, obPer.y, 0, 0, -1, 0 );
Todo funciona comprobado, y también confirmo que todo sigue funcionando (relativamente), sólo falla lo visual: todo negro.
Si no activo la fullscreen, como puse el tamaño de la ventana igual al del monitor y sin bordes, parece como si fuese completa. Incluso si clico a los bordes al máximo, sigue dentro del juego. ¿Funcionaría igual que completa, o tiene desventajas? En caso de que no se resolviera...
Ese código no debe afectar. Creo que Marth tuvo un problema similar, su juego funcionaba al activar el método alternativo de sincronicazión vertical, pero eso puede causar una disminución de los fps.
Creo que el juego funciona un poco más rápido en pantalla completa porque windows no se preocupa por dibujar otras cosas, pero el cambio es muy poco.
¡Bingo! Activar el Vsync lo resolvió, gracias! Ahora me asalta la duda de... ¿A qué viene esto? Me preocupa que en otro PC pase al revés y no funcione por tenerla desactivada. Aunque supongo que... no debo preocuparme, activo vsync y funcionará en todos los PC siempre?
Lo más seguro es que funcione en todos, pero podría tener menos fps de lo esperado en un PC de gama baja. Por cierto ¿usas Win10?, creo que esto ocurre por un problema de compatibilidad.
Yup, Windows 10. Entonces... bien, lo dejo así y no me preocupo por el tema. No quiero que los que jueguen en W10 no puedan jugar así que... toca joderse e intentar optimizarlo más. Igual, no voy a rallarme por las personas de PCs lentos y que eso me impida hacer cosas, cuando precisamente el mundo va a más y tal. Mi juego tiene toques 3D así que de entrada... intentaré optimizar lo que pueda, pero meh >n<
Gracias! Resuelto
Podrías poner una opción dentro del juego para activar o desactivar la sincronización. También intenta compilar el juego y ejecutar en modo de compatibilidad con Win7.