DirectX - página 8

 
Реter Konow:

Ayer hice un ejemplo de volteador con celdas que se redibujan independientemente de todo el lienzo de la ventana:https://www.mql5.com/ru/forum/333652/page4

Muestra, que el redibujado separado de las celdas mantiene la carga en los límites del 20% (en video más debido a la grabación de video), SIEMPRE si las celdas son redibujadas TODO el tiempo y a 40 fps. La dinámica normal de la secadora con este enfoque cargará un 5-10% aproximadamente.

La carga es alta sólo si se redibuja un área grande (~500*500 px) a alta velocidad sin pausas (~40+ fps). Cualquier retraso o reducción del área de redibujado reducirá la carga muchas veces.

En tu ejemplo el vaso está bastante truncado, por supuesto, también en profundidad. Es curioso, pero aparentemente el renderizado de una pila tiene que hacerse en todos los núcleos con OpenCL, además, ya que el cálculo se descompone en celdas separadas, pero aquí soy un teórico.

 
Aleksey Vyazmikin:

En tu ejemplo el vaso está bastante truncado, por supuesto, incluyendo la profundidad. Es curioso, pero aparentemente el dibujo del vaso debería calcularse en todos los núcleos con OpenCL, además, ya que el cálculo se divide en celdas separadas, pero aquí soy un teórico.

Bien, haré un vaso de precipitados con más células y lo comprobaré de nuevo.

 
Реter Konow:

Bien, haré un vaso de precipitados con más células y lo comprobaré de nuevo.

Pero no lo hagas estático, hazlo dinámico.

 
Rafil Nurmukhametov:

El procesador carga bien, en la imagen anterior se puede ver una posición abierta, el marco alrededor del precio es de color magenta, allí la posición es deficitaria, en la imagen inferior la posición es excedentaria

Mi opinión es que dicha imagen no debería formarse más de 1-3 milisegundos. Si tarda más que eso, debe haber un error en alguna parte.
 
Rafil Nurmukhametov:

Pero no lo hagas estático, hazlo dinámico.

¿Qué quiere decir con "dinámico"? ¿Para que no todas las celdas cambien de valor al mismo tiempo? No lo entiendo.

 
Nikolai Semko:
Mi opinión es que esa imagen no debería tardar más de 1-3 milisegundos en formarse. Si tarda más que eso, hay algo que no funciona.

Ahora has subido el listón de la perfección... ¿Por qué no lo bajas a 6-8 milisegundos?

 
Реter Konow:

¿Qué quiere decir con "dinámico"? ¿Para que no todas las celdas cambien de valor al mismo tiempo? No lo entiendo.

Para que el precio actual se mueva a través de las celdas y no en el medio como en mt5

 
Rafil Nurmukhametov:

para hacer que el precio actual se mueva a través de las celdas, no en el medio como en la copa mt5

Es decir, sin centralización. Pues bien, para los instrumentos de futuros esto es lo que realmente se necesita. Bien. (Esto es sólo una maqueta para probar la carga).

 
Rafil Nurmukhametov:

Ahora has subido el listón de la perfección... ¿Puedes bajarlo a 6-8 milisegundos?

es demasiado. Incluso 3 es demasiado. 6-8 a 30 fps es un 20-30% del tiempo de la CPU.
Es necesario utilizar ArrayCopy en la medida de lo posible. La transparencia también debe utilizarse al mínimo sólo cuando sea necesario.
Puedes pasarlo por el perfil y ver dónde se escapa el máximo de la CPU.
Por supuesto, Peter tiene razón, deberías redibujar localmente donde hubo cambios pero no redibujar todo el lienzo cada vez.
Y el uso de DX en general puede aliviar mucho su CPU
 

Bien, hice el vaso en el editor. Me llevó dos horas. Eso es mucho alboroto. Puedes acelerar el proceso por un factor de cuatro añadiendo herramientas.

Lo he probado.

El resultado: menos de un 20% de carga con cambios constantes en todas las celdas de compra y venta, y una celda de precio, a 40 cuadros por segundo. (La carga aumenta entre un 5 y un 7% cuando se activa la grabación).


Repito mi opinión: en condiciones reales la carga sería del 5 al 10 por ciento, dependiendo de la actividad del mercado.

Archivos adjuntos:
GUI_Expert.ex5  600 kb