PDA

Ver la versión completa : ¿Tiene solución la famosa diagonal?



The_Punisher
03/05/2009, 12:33
Solo leo, posibles soluciones y no saco nada en claro, a mi me parece muy molesta después de ver los últimos videos y quiero escuchar opiniones de usuarios que conozcan el tema, sobre si es un problema que realmente tiene solución o que pueda ser un lastre.

doble-h
03/05/2009, 12:37
que le pasa?

aitorpc
03/05/2009, 12:50
Yo en mi ignorancia pregunto: ¿que tiene que ver la pantalla rotada para que se produzca el "efecto diagonal"? se ha dicho que el motivo de la diagonal es que la pantalla esta rotada, pero ¿que mas da que este rotada? si es por el unico hecho de su rotacion se sequiria produciendo pero en otro sentido si se modifice la manera que en se "pinta" la pantalla, ¿no?

¿Es esta la razon?:


mira, es sencillo, imagina que la controladora de la pantalla, pinta la pantalla (una cualquiera ) en vertical, pero la pinta con un pequeño barrido, no la pinta de golpe, es decir hace como un escaner, empieza a pintar por la izquierda, y termina por la derecha. Ahora, tu pones la pantalla en horizontal, y tu software hace que la pinte de izquierda, y termine por la derecha. Pero el hardware, sigue funcionando igual, así que la pantalla se pinta como antes, que lo que antes era la izquierda ahora es arriba, y lo que era la derecha ahora es abajo, así que sale una diagonal por la unión de los dos barridos. (Es una maner burda de explicarlo ), ¿por qué en el omnia no pasa?, porque la pantalla es vertical, el pintado se hace de izquierda a derecha ( o como sea... da igual), y cuando lo giras, es el software el que se encarga de girarte los gráficos, pero la pantalla se sigue pintando igual, es decir de izquierda a derecha , que al ponerlo en horizontal será de arriba a abajo, o como toque según como lo hayas girado. Vamos, que lo importante es que el software que gestione la pantalla haga el barrido en el mismo sentido que la controladora de la pantalla, para que los búfferes de la pantalla no produzcan ninguna desincronización.

Si he dicho alguna tontería que alguien me corrija, no soy un experto en pantallas, ni en el funcionamiento de éstas.

hardyx
03/05/2009, 13:07
Yo creo que el amigo Gabs86 lo ha explicado perfectamente. Lo que se ve es una división al actualizar la pantalla de unos segundos. Si no estás atento no lo ves, pero es un poco molesto.

Los juegos están contínuamente escribiendo en la memoria de vídeo a cada frame (en horizontal), y el firmware continuamente pintando en la pantalla, pero en vertical. La solución que recomiendan es pintar usando opengl, para que la imagen se rote por hardware. Esto creo que es porque no hay operaciones 2D por hardware en la Wiz. La pantalla tiene dos modos además, si pintas en vertical (como se hacía en la GP32 y en los móviles actuales) no tendrás ese efecto. Según dicen el menú se pinta en modo vertical. También se puede pintar en un buffer, y luego volcarlo a la pantalla columna por columna (supongo).

Gabs86
03/05/2009, 13:42
yo creo que ya no hay más que hablar del tema. se puede solucionar, y es fácilmente solucionable, solo que por ahora la solución no es transparente para el programador, y que se solucione o no dependerá de cada uno que programe una aplicación para la wiz.

Puck2099
03/05/2009, 14:07
Fácil de solucionar por soft es, eficiente no.

O se pinta rotado o se rota con opengl o bien se hace por soft haciendo que se arrastre...

Gabs86
03/05/2009, 14:16
y es eficiente hacerlo con opengl?, habría alguna pérdida de rendimiento significativa?

Puck2099
03/05/2009, 14:23
y es eficiente hacerlo con opengl?, habría alguna pérdida de rendimiento significativa?

Según GPH y BuD pérdidas mínimas, yo no he probado aún... Lo que no se es cuanto puede llegar a complicar el código de un emulador.

Segata Sanshiro
03/05/2009, 15:09
¿En GP32 por qué esto no era un problema? (O lo era pero parece que se solucionaba más fácilmente). Quiero decir que no recuerdo que en GP32 se hiciera tan famoso el problema de tener una pantalla vertical, y sin embargo en Wiz sí hay bastante preocupación por ello.

mortimor
03/05/2009, 15:52
¿En GP32 por qué esto no era un problema? (O lo era pero parece que se solucionaba más fácilmente). Quiero decir que no recuerdo que en GP32 se hiciera tan famoso el problema de tener una pantalla vertical, y sin embargo en Wiz sí hay bastante preocupación por ello.

En GP32 no era un problema porque todas las funciones de pintado, del SDK original y alternativos, iban en vertical. Tu preparabas el buffer en vertical y este se pintaba columna a columna. De hecho, recuerdo que el doble buffer ganaba mucho al hacerlo tirando directamente de registros y vblank, pero los buffer eran en vertical.

El problema mayor es con emuladores. Los graficos de un emulador son los de la maquina y en la mayoría de los casos asumen una representación horizontal, teniendo que invertirse. Pero en el resto de cosas depende del que programe.

cyantum
03/05/2009, 16:20
¿Esto de solucionarlo por soft incluye los juegos hechos en Flash?

¿Tendrán que buscar alguna solución hecha por soft los que quieran hacer juegos en Flash?

Segata Sanshiro
03/05/2009, 17:57
En GP32 no era un problema porque todas las funciones de pintado, del SDK original y alternativos, iban en vertical. Tu preparabas el buffer en vertical y este se pintaba columna a columna. De hecho, recuerdo que el doble buffer ganaba mucho al hacerlo tirando directamente de registros y vblank, pero los buffer eran en vertical.

¿Entonces aquí te obligan a pintar sobre un buffer de 320x240? ¿Eso se podría cambiar en futuros firmware o usando librerías alternativas?

Y otra cosilla, un juego que ya de por sí es en 3D y que usa OpenGL (al contrario que un emulador de cualquier sistema), ¿también se puede "beneficiar" del rotado por OpenGL o no es tan simple?


¿Esto de solucionarlo por soft incluye los juegos hechos en Flash?

¿Tendrán que buscar alguna solución hecha por soft los que quieran hacer juegos en Flash?

Los juegos en Flash los ejecuta el reproductor de Flash, así que diría que tiene que ser el reproductor el que se encargue del problema. El reproductor de Flash es una cosa complicadilla (de hecho hay poca alternativa libre a la que meter mano) y nos la dan ya hecha los de GPH.

mortimor
03/05/2009, 18:32
¿Entonces aquí te obligan a pintar sobre un buffer de 320x240? ¿Eso se podría cambiar en futuros firmware o usando librerías alternativas?

No se como sera en la Wiz. Por lo que han comentado por aquí han intentado arreglarlo por software con poco éxito, ya que no salia la línea pero se comprometía mucho el rendimiento. Toda solución que pase por rotar mediante software el buffer será claramente ineficiente.


Y otra cosilla, un juego que ya de por sí es en 3D y que usa OpenGL (al contrario que un emulador de cualquier sistema), ¿también se puede "beneficiar" del rotado por OpenGL o no es tan simple?


Obviamente, si un juego usa OpenGL y será bastante mas sencillo evitar el problema, ya que se reducirá a añadir un glRotate() al final del renderizado si la escena no está pensada para una proyección sobre una pantalla vertical.

Dado que hay soporte por Hardware para OGL alguien con conocimientos suficientes de dicha implementación por hardware podría implementar funciones que rotasen el buffer casi sin perdidas. O eso supongo yo, no lo veo sencillo a priori, la verdad.

Bueno, hay gente muy capaz por ahi suelta, ya veremos cuanto tardan en arreglarlo :)

efegea
03/05/2009, 18:36
Con OpenGL va a ser fácil. Seguro que sacan una librería para adaptar software ya existente. Incluso se podrían adaptar las SDL para que usen OpenGL transparentemente, pero necesitaría mucho cambio en el código interno de las SDL.

Jedive
04/05/2009, 13:11
y es eficiente hacerlo con opengl?, habría alguna pérdida de rendimiento significativa?
Rotar la proyección en OpenGL no supone una pérdida de rendimiento. Porque supongo que la Wiz tenga GPU, no? Y no que que se hayan marcado la implementación de OpenGL ES por soft...

SpaVampyre
04/05/2009, 16:18
Pues no tengo claro si tiene GPU o la CPU procesa OpenGL, la dieferencia es el paralelismo.

jcom
04/05/2009, 16:22
Este tema se discutió bastante en los foros de gp32x. Recuerdo que Exophase no estaba muy conforme con la solución de usar OpenGL porque, según lo que entendí, eso requiere usar zonas de la memoria para el framebuffer y si estás accediendo directamente al hardware esto puede darte problemas.

Resumiendo, lo que me pareció entender es que la solución puede ser suficientemente buena si usas las SDL que proporcionen GPH, pero para los que quieran un acceso de más bajo nivel puede ser una fuente de problemas.

hardyx
04/05/2009, 23:06
Creo que si usas opengl hay zonas de memoria en las que no se puede escribir, ya que son registros del hardware 3D. Y esto impide usar toda la memoria. Y si proponen opengl como solución, se supone que está acelerado por hardware e irá más rapido que a mano.
Pero ese problema no existe si se usa el modo vertical del display, escribiendo en la misma dirección que usa el display para pintarse. Todo esto según dijeron algunos desarrolladores en el foro inglés.

Zenzuke
05/05/2009, 23:09
Tampoco molesta tanto la línea ¿eh? Lo digo habiendo visto la pantalla un rato xDD

McNathan
05/05/2009, 23:29
Tampoco molesta tanto la línea ¿eh? Lo digo habiendo visto la pantalla un rato xDD

Basta con exista para que te comas la bola, es como cuando tienes un punto muerto en una TFT y no te das cuenta y cuando lo ves no paras de verlo, es algo sugestivo, pero es algo que pasa.

Saludos.

Gabs86
05/05/2009, 23:50
sep, es una tortura, al menos recién comprada XD