2010-12-13 14 views
5

Próbuję zrobić prostego bota dla gry internetowej, więc chciałbym móc odczytać kolor piksela na ekranie. Zrobiłem to w systemie Windows z GetPixel(), ale nie mogę tego zrozumieć na OS X. Szukałem w Internecie i natknąłem się na glReadPixel. Kiedy zrobiłem proste narzędzie wiersza poleceń w XCode, wstawiłem poniższy kod. Jednak nie mogę sprawić, żeby to działało. Wciąż otrzymuję błąd EXC_BAD_ACCESS z tego:Jak odczytać piksel z ekranu?

GLfloat r; 
glReadPixels(0, 0, 1, 1, GL_RED, GL_FLOAT, &r); 

Myślałem powyższy kod będzie przechowywać czerwoną wartość piksela w punkcie (0,0) na R. Och, chciałbym uniknąć podejścia do zrzutu ekranu, ponieważ jest to powolne. Jakaś pomoc?

P.S. Za pomocą narzędzia wiersza poleceń moim celem nadrzędnym jest utworzenie skryptu bash lub skryptu jabłkowego, ponieważ mam już narzędzie wiersza poleceń, które może kliknąć na ekranie.

+0

Czy masz aktywny kontekst OpenGL, gdy wywołujesz 'glReadPixels()'? – genpfault

+0

Nie. Czy możesz wskazać mi właściwy kierunek? – hassaanm

+0

Chciałbym, aby główny kontekst OpenGL był głównym ekranem. – hassaanm

Odpowiedz

4

glReadPixels dotyczy tylko odczytu piksela z bufora ramki (obszaru, w którym rysowana jest karta graficzna).

Czytanie pikseli z "ekranu" nie jest w ogóle związane z OpenGL. Do tego potrzebne są funkcje specyficzne dla systemu.

+0

Och dzięki. Czy zdarzy ci się wiedzieć, w jaki sposób mogę uzyskać piksel ekranowy na komputerze Mac? – hassaanm

+0

Nie, nie grok macs. :) – Kos