forked from cirosantilli/cpp-cheat
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mouse_getpixel.cpp
63 lines (52 loc) · 1.29 KB
/
mouse_getpixel.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#include <GL/glut.h>
#include <vector>
#include <iostream>
using namespace std;
void display()
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(-10, 10, -10, 10, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(5,5,5);
glBegin(GL_QUADS);
glColor3ub(255,0,0);
glVertex2f(-1,-1);
glColor3ub(0,255,0);
glVertex2f(1,-1);
glColor3ub(0,0,255);
glVertex2f(1,1);
glColor3ub(255,255,255);
glVertex2f(-1,1);
glEnd();
glutSwapBuffers();
}
void mouse( int x, int y )
{
// 4 bytes per pixel (RGBA), 1x1 bitmap
vector< unsigned char > pixels( 1 * 1 * 4 );
glReadPixels
(
x, glutGet( GLUT_WINDOW_HEIGHT ) - y,
1, 1,
GL_RGBA, GL_UNSIGNED_BYTE, &pixels[0]
);
cout << "r: " << (int)pixels[0] << endl;
cout << "g: " << (int)pixels[1] << endl;
cout << "b: " << (int)pixels[2] << endl;
cout << "a: " << (int)pixels[3] << endl;
cout << endl;
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(800,600);
glutCreateWindow("glReadPixels()");
glutDisplayFunc(display);
glutPassiveMotionFunc(mouse);
glutMainLoop();
return 0;
}