Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Una CPU, un proceso, y 2 monitores para renderizar

Iniciado por ZüNdFoLGe, 16 de Marzo de 2010, 09:01:12 PM

« anterior - próximo »

ZüNdFoLGe

Buenas,
     
      quien lea esto, que imagine lo siguiente: en una PC corre un proceso (por ejemplo supongamos que es simplemente una SUMA entre 12 y 15). La PC tiene 2 salidas, supongamos que un LCD de 16" y otro de 19" (por decir algo). La gracia es que aparezca el resultado pintado en color VERDE en el LCD de 16" y en color AZUL en el LCD de 19".

Algo así es la duda que tengo, independientemente del lenguaje que use (que por cierto será Java), ¿alguna guía hacia una posible solución?

kraj0t

¿? ¿Y ya está? ¿No nos das más detalles?

Pues no sé, a ver. ¿Vas a usar ventanas, como Swing? ¿Lo quieres mostrar por consola? ¿Lo dices porque quieres hacer un juego...? ¿Qué tiene que ver que haya una CPU y un proceso con los 2 monitores, a qué te refieres?
Muerte y destrucción a tú
¿A yo?
¡A tú!

tamat

si tienes el escritorio extendido a los dos monitores, puedes crear una ventana que ocupe ambos y ya está, las tarjetas nvidia lo soportan
Por un stratos menos tenso

ZüNdFoLGe

#3
Cita de: kraj0t en 17 de Marzo de 2010, 10:47:45 AM
¿? ¿Y ya está? ¿No nos das más detalles?

Pues no sé, a ver. ¿Vas a usar ventanas, como Swing? ¿Lo quieres mostrar por consola? ¿Lo dices porque quieres hacer un juego...? ¿Qué tiene que ver que haya una CPU y un proceso con los 2 monitores, a qué te refieres?

No veo diferencia entre usar swing o un terminal de consola (eso depende de lo que tu estes imaginandote, cosa que no sé), la pregunta es clara, nunca mencioné la palabra 'juego'. Por otro lado, mencioné lo de una única CPU ya que en algunas máquinas como las usadas para POS existen 2 CPU con hasta 4 salidas, lo cual escapa a lo que yo estoy preguntando, que sería un PC común y corriente. Gracias de todas formas.

Cita de: tamat en 17 de Marzo de 2010, 11:31:56 AM
si tienes el escritorio extendido a los dos monitores, puedes crear una ventana que ocupe ambos y ya está, las tarjetas nvidia lo soportan

Algo así serviría si, me gustaría tener las 2 ventanas separadas, una para cada monitor. Será posible renderizar una ventana en el monitor que se me antoje indistintamente? Esto es independiente del lenguaje, creo que sería jugar un poco con las coordenadas de donde despliego la ventana, tendré que probar.

[EX3]

Cita de: ZüNdFoLGe en 17 de Marzo de 2010, 01:47:24 PM
Algo así serviría si, me gustaría tener las 2 ventanas separadas, una para cada monitor. Será posible renderizar una ventana en el monitor que se me antoje indistintamente?
En DirectX se supone que eso *creo* se podia hacer mediante los SwapBuffers o SwapChains, creo que era algo como separar o tener dos buffers de renderizado que podias asociar a diferentes ventanas. Si le sirve a alguien entendido en materia como referencia para aconsejarte con algo mas detalle...

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

TrOnTxU

Cita de: [EX3] en 17 de Marzo de 2010, 02:18:13 PM
En DirectX se supone que eso *creo* se podia hacer mediante los SwapBuffers o SwapChains, creo que era algo como separar o tener dos buffers de renderizado que podias asociar a diferentes ventanas. Si le sirve a alguien entendido en materia como referencia para aconsejarte con algo mas detalle...

Las Swap de dx valen para no tener que crearte varios devices si quieres renderizar en varias ventanas, y no perder mucho rendimiento (ejemplo claro: world editor con varias ventanas de vista: front/top/left/perspective). Aunque si te creas varios devices con una swapChain por cada device también funciona. (lo he probao :) )
Pero en un principio (y remarco lo de "en un principio") no te dan información sobre el monitor que estas utilizando.
Hay samples en el DX_SDK de multiple monitor, y creo que es de donde más info se puede sacar (si vas a estar usando DX, claro).

Cita de: ZüNdFoLGe en 17 de Marzo de 2010, 01:47:24 PM
No veo diferencia entre usar swing o un terminal de consola (eso depende de lo que tu estes imaginandote, cosa que no sé), la pregunta es clara, nunca mencioné la palabra 'juego'. ...

??? No hay diferencia? Bueno, creo que dejaré esto de programar, ... creo que vi unas opos por ahi para barrendero, igual ...
La palabra "juego" raramente deberia darse por sentada en un foro como este, de claro matiz taurino.

LA PREGUNTA DEL MILLÓN (lo que todos estabais deseando preguntar):
+ Porque no te creas dos ventanas. Colocas cada una en un monitor y en cada una pintas lo que te salga de los h****s quieras?????
+ Lo que quieres es una ventana que cuando la cambies de monitor cambie de color lo que estas renderizando en él?

Dios mio estoy perdido!! Menos mal que la pregunta estaba clara!!


Adew
Vicent: Linked-In  ***  ¡¡Ya tengo blog!!

Juan Mellado

En Java tienes mucha información en la ayuda del propio JDK.

En la ayuda de la clase GraphicsDevice tienes un ejemplo de lo que "creo" que quieres hacer.

A grandes rasgos, con un par de llamadas tienes los monitores presentes en el sistema:

GraphicsEnvironment ge = GraphicsEnvironment. getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();


Y con eso ya puedes obtener la información asociada a la configuración de cada uno, como sus orígenes de coordenadas y tamaños (bounds):

for (int j = 0; j < gs.length; j++) {
      GraphicsDevice gd = gs[j];
      GraphicsConfiguration[] gc = gd.getConfigurations();

      for (int i=0; i < gc.length; i++) {
         Rectangle gcBounds = gc[i].getBounds();
...


Ubica tus ventanas en esas coordenadas.

Espero te sirva.
Saludos

ZüNdFoLGe

#7
Cita de: TrOnTxU en 17 de Abril de 2010, 10:44:27 AM
??? No hay diferencia? Bueno, creo que dejaré esto de programar, ... creo que vi unas opos por ahi para barrendero, igual ...

Creo que no sería mala idea... sin menospreciar a ningun barrendero...

Cita de: Juan Mellado en 17 de Abril de 2010, 12:50:39 PM

for (int j = 0; j < gs.length; j++) {
     GraphicsDevice gd = gs[j];
     GraphicsConfiguration[] gc = gd.getConfigurations();

     for (int i=0; i < gc.length; i++) {
        Rectangle gcBounds = gc[i].getBounds();
...


Efectivamente...recién veo tu post, este hilo se había cortado 1 mes sin respuestas.

Lo he resuelto de esa manera, con la excepción de que manejo los valores de las coordenadas del graphic device para saber de qué monitor se trata. Ya que el orden en que getScreenDevices almacena los devices no es siempre el mismo.

Gracias y Salu2






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.