Programowanie w systemie UNIX/Cpp: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
→OpenGl: nowy kod |
→OpenGl: mv |
||
Linia 26: | Linia 26: | ||
./a.out |
./a.out |
||
==OpenGl == |
|||
<source lang = cpp> |
|||
// http://stackoverflow.com/questions/8000921/how-to-get-color-from-the-pixel-opengl |
|||
// g++ r.cpp -lGL -lGLU -lglut -Wall |
|||
// ./a.out |
|||
#include <GL/glut.h> |
|||
#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(); |
|||
glPushMatrix(); |
|||
glScalef(5,5,5); |
|||
glBegin(GL_TRIANGLES); |
|||
glColor3ub(255,0,0); |
|||
glVertex2f(-1,-1); |
|||
glColor3ub(0,255,0); |
|||
glVertex2f(1,-1); |
|||
glColor3ub(0,0,255); |
|||
glVertex2f(1,1); |
|||
glEnd(); |
|||
glPopMatrix(); |
|||
glutSwapBuffers(); |
|||
} |
|||
void motion(int x, int y) |
|||
{ |
|||
y = glutGet( GLUT_WINDOW_HEIGHT ) - y; |
|||
unsigned char pixel[4]; |
|||
glReadPixels(x, y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixel); |
|||
cout << "R: " << (int)pixel[0] << endl; |
|||
cout << "G: " << (int)pixel[1] << endl; |
|||
cout << "B: " << (int)pixel[2] << endl; |
|||
cout << endl; |
|||
} |
|||
int main(int argc, char **argv) |
|||
{ |
|||
glutInitWindowSize(640,480); |
|||
glutInit(&argc, argv); |
|||
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); |
|||
glutCreateWindow("glReadPixels()"); |
|||
glutDisplayFunc(display); |
|||
glutPassiveMotionFunc(motion); |
|||
glutMainLoop(); |
|||
return 0; |
|||
} |
|||
</source> |
Wersja z 21:21, 27 paź 2014
Przykłady
Przykładowe program w C++ :
Hello world
#include <iostream>
int main () {
std::cout << "Hello, world!\n";
return 0;
}
Zapisujemy jako hello.cpp
Kompilujemy :
g++ -Wall hello.cpp
i uruchomiamy :
./a.out