2010-12-15 9 views
0

Bonjour autres développeurs Cocoa,lecture/écriture octets arbitraires à VRAM sur OS X 10.4+

Je voudrais vérifier avec quelques-uns des experts ici pour voir si elles pourraient être en mesure d'aider à clarifier une zone où la documentation font défaut. À l'heure actuelle, nous avons une méthode qui est destinée à tester la VRAM en obtenant l'adresse de base de l'affichage et en écrivant/lisant un modèle d'octets commençant à cette adresse. Ceci a pour effet que chaque pixel de l'affichage est successivement mis à une couleur spécifique qui est ensuite relue pour s'assurer qu'il est le même que ce qui est attendu.

L'implémentation d'origine utilisait les fonctions de dégagement pour obtenir cette adresse, et j'ai été chargée de la mettre à jour pour 10.4+. J'utilise CGDisplayCaptureWithOptions(kCGDirectMainDisplay, kCGCaptureNoFill), puis obtenir l'adresse de base en appelant CGDisplayBaseAddress(kCGDirectMainDisplay). Cela semble faire ce que je m'attends et la mise en œuvre fonctionne aussi bien que la version précédente.

La seule question à gauche pour moi de demander est si c'est vraiment écrire à la mémoire VRAM ou est-ce juste le tampon d'affichage dans la RAM? Ou devrais-je utiliser quelque chose comme OpenGL pour faire cela? Merci à tous pour vos conseils et suggestions. Je peux fournir un échantillon de code si vous le jugez nécessaire.

Répondre

0

A partir de docs Apple:

CGDisplayBaseAddress(), dépréciée sous Mac OS X 10.6

« Retourne l'adresse de base en mémoire framebuffer d'un affichage en ligne au lieu d'utiliser le framebuffer pour attirer. l'écran, vous devriez plutôt utiliser un moteur de dessin supporté tel que Quartz ou OpenGL. "

Cela semble être une bonne recommandation. Vous devriez utiliser OpenGL pour le dessin et le test (je suppose, avec glReadPixels()).

+0

Merci Costique, ceci semble être la seule fonction qui est supportée Pre-10.7. Je suppose que nous devrons le réécrire en utilisant OpenGL quand il s'agit de sortir la version 10.7+, mais en attendant je suppose que ça marchera pour le moment. Merci encore! – Kross