c++ - sistema - ¿Cómo se pueden optimizar las rutinas de dibujo para lograr la máxima frecuencia de actualización en Windows CE?
para que sirve el host de servicio optimizacion de entrega (1)
Desde Windows Vista, las operaciones de GDI (que no sean BitBlt) ya no son aceleradas por hardware, sino que se realizan en software.
Para obtener el rendimiento que necesita, probablemente necesite utilizar Direct3D u OpenGl.
Sin embargo, todo este documento msdn implica que, desde NT 6.1, la aceleración de hw de hw vuelve a estar sobre la mesa. Todavía espero que las API basadas en vectores ofrecidas por OpenGL y D3D funcionen de forma mucho más fiable: el dibujo de líneas GDI no es algo que los escritores de controladores se esfuercen por optimizar.
En respuesta a la actualización, Windows CE es el objetivo: Direct X aparentemente ha estado disponible en Windows CE desde al menos CE 2.1
Todavía estoy apostando a que GDI no es particularmente acelerado en CE; si hay algún soporte para hw, DirectX sería la forma de acceder a él.
En mi aplicación estoy dibujando un conjunto de líneas (como un gráfico vertical), y la frecuencia de actualización será de alrededor de 30 veces en un segundo. He calculado el rendimiento y se necesitan 400 milisegundos para dibujar líneas completas, pero esto no será lo suficientemente rápido ya que tenemos que actualizar la pantalla cada 34 milisegundos.
Estoy recurriendo a CDC.
Vamos a dibujar en un dispositivo con Windows CE con un procesador de 400 MHz. El dibujo implica las API simples de MFC como MoveTo
, LineTo
, FillRect
, etc. en DC of View:
CDC* pDC = GetDC(); //draw vertical line from one end of screen to the other
pDC->MoveTo(some xy Cordinates);
pDC->LineTo(some xy Points);
¿Cómo podemos optimizar las rutinas de dibujo? Por favor sugiera cualquier apuntador.