1 votos

MacOS 11: Obtener información del sistema (GPU, resolución) mediante programación (en C)

Necesito acceder a datos sobre la GPU y la resolución de la pantalla en C, sin usar system_profiler porque tarda demasiado(.3s-.5s system_profiler SPDisplaysDataType ), y necesita greping y corte, que tampoco es tan rápido.

El almacenamiento en caché sería la respuesta, pero muy miope, ya que alguien puede utilizar diferentes monitores, etc.

Por desgracia, system_profiler es de código cerrado.

EDIT: He utilizado CGDisplayPixelsWide y CGDisplayPixelsHigh para obtener la resolución. Durante la compilación tuve que compilar con -framework Cocoa -framework IOKit . El único inconveniente es que obtiene la resolución del sistema en lugar de la resolución de la pantalla. Así que la función se ve así.

static char *get_resolution()
{
        int screen_width = CGDisplayPixelsWide(CGMainDisplayID());
        int screen_height = CGDisplayPixelsHigh(CGMainDisplayID());
        ...
}

1voto

displayplacer permite leer y escribir la configuración de la pantalla y es de código abierto. Sin embargo, no estoy seguro de los detalles de la GPU.

La API utilizada parece estar definida en IOKit/graphics/IOGraphicsLib.h .

0voto

Madhur Ahuja Puntos 190

No estoy seguro de las APIs específicas, pero mirar el código fuente de una aplicación de código abierto que funcione con resoluciones de pantalla o GPUs puede ser beneficioso. Dos ejemplos que se me ocurren son RDM y gSwitch (RDM no se actualiza desde hace tiempo, pero existen forks actualizados).

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X