Mi piacerebbe ottenere il colore dal pixel nel mio gioco e salvare questo colore in variabile. Come farlo in opengl?Come ottenere il colore dal pixel? OpenGL
5
A
risposta
9
#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;
}
5
struct{ GLubyte red, green, blue; } pixel;
glReadPixels(x, y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, &pixel);
1
#include <math.h>
#include <gl/glut.h>
struct Point {
GLint x;
GLint y;
};
struct Color {
GLfloat r;
GLfloat g;
GLfloat b;
};
void init() {
glClearColor(1.0, 1.0, 1.0, 0.0);
glColor3f(0.0, 0.0, 0.0);
glPointSize(1.0);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0, 640, 0, 480);
}
//this function is used for getting color of pixel
Color getPixelColor(GLint x, GLint y) {
Color color;
glReadPixels(x, y, 1, 1, GL_RGB, GL_FLOAT, &color);
return color;
}
void setPixelColor(GLint x, GLint y, Color color) {
glColor3f(color.r, color.g, color.b);
glBegin(GL_POINTS);
glVertex2i(x, y);
glEnd();
glFlush();
}
void floodFill(GLint x, GLint y, Color oldColor, Color newColor) {
Color color;
color = getPixelColor(x, y);
if(color.r == oldColor.r && color.g == oldColor.g && color.b == oldColor.b)
{
setPixelColor(x, y, newColor);
floodFill(x+1, y, oldColor, newColor);
floodFill(x, y+1, oldColor, newColor);
floodFill(x-1, y, oldColor, newColor);
floodFill(x, y-1, oldColor, newColor);
}
return;
}
void onMouseClick(int button, int state, int x, int y)
{
Color newColor = {1.0f, 0.0f, 0.0f};
Color oldColor = {1.0f, 1.0f, 1.0f};
floodFill(320, 240, oldColor, newColor);
}
void draw_circle(Point pC, GLfloat radius) {
GLfloat step = 1/radius;
GLfloat x, y;
for(GLfloat theta = 0; theta <= 360; theta += step) {
x = pC.x + (radius * cos(theta));
y = pC.y + (radius * sin(theta));
glVertex2i(x, y);
}
}
void display(void) {
Point pt = {320, 240};
GLfloat radius = 50;
glClear(GL_COLOR_BUFFER_BIT);
glBegin(GL_POINTS);
draw_circle(pt, radius);
glEnd();
glFlush();
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowSize(640, 480);
glutInitWindowPosition(200, 200);
glutCreateWindow("Open GL");
init();
glutDisplayFunc(display);
glutMouseFunc(onMouseClick);
glutMainLoop();
return 0;
}
Problemi correlati
- 1. Ottenere il colore del pixel in C++
- 2. Come ottenere il colore di un pixel in un UIView?
- 3. iOS WKWebView ottiene il colore del pixel RGBA dal punto
- 4. Ottieni il colore dei pixel da un'immagine
- 5. Strane imperfezioni OpenGL Pixel
- 6. Ottenere il colore dei pixel nella posizione con pygame
- 7. Cambiare il colore dei pixel Python
- 8. valore colore pixel rmagick
- 9. Opengl pixel disegno 2D perfetto
- 10. Ottieni il colore più veloce dei pixel?
- 11. iOS: rileva il colore di un pixel?
- 12. Interpolazione colore OpenGL
- 13. Lettura pixel da OpenGL/GLUT Applicazione
- 14. iPhone Obiettivo C: come ottenere il colore di un pixel del punto toccato su UIImageView?
- 15. Come definire la gamma chiara per il colore dei pixel
- 16. Come leggere il colore di uno schermo Pixel
- 17. iPhone OpenGL ES 2.0 - Pixel Perfect Textures
- 18. SpriteKit: come posso ottenere il colore del pixel da un punto in SKSpriteNode?
- 19. Come posso ottenere il colore di un pixel su X, Y usando C#?
- 20. Come posso ottenere il colore di qualsiasi pixel specificato su una pagina Web?
- 21. come ottenere il colore nello spot (o pixel) di un'immagine su evento touch in Android
- 22. Come ottenere il colore di coordinate x, y di un pixel da un'immagine?
- 23. OpenGL ES: come colorare la texture con il colore
- 24. Ottieni il colore pixel di Base64 PNG usando javascript?
- 25. Come fa il framment shader a sapere quale variabile usare per il colore di un pixel?
- 26. Il colore gradiente CSS si arresta dalla fine in pixel
- 27. Rimuovi: passa il colore dal testo senza impostare il colore
- 28. Come accedere al colore dei pixel all'interno di una bitmap?
- 29. come ottenere il colore da GradientDrawable
- 30. Come ottenere il colore di accento programmaticamente?
codice bello, corto e funziona come previsto. Hai inserito il codice per verificare/visualizzare il colore dei pixel all'interno della procedura di visualizzazione. Funziona velocemente, ma quando il disegno è più complicato, il programma non funziona correttamente. Che dire di mettere sopra il codice all'interno della procedura di movimento, come [qui]? (Http://en.wikibooks.org/wiki/Fractals/Computer_graphic_techniques/2D/gfile#Viewer_for_programmers) – Adam
@Adam: Sì, modificato. – genpfault