ゲームのピクセルから色を取得し、この色を変数に保存したいと考えています。どのようにOpenGLでそれを行うには?ピクセルから色を取得する方法は? OpenGL
5
A
答えて
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;
}
関連する問題
- 1. 画像からピクセルのx、y座標の色を取得する方法は?
- 2. 特定の領域でピクセルの色を取得する方法
- 3. ビットマップから1ピクセルからrgbカラーを取得する方法
- 4. GDALピクセルの色を取得
- 5. CGImageRefオブジェクトからピクセルのRGB値を取得する方法は?
- 6. GtkDrawingAreaから座標のピクセルの色を取得する
- 7. PyQtGraphピクセルの色を取得する
- 8. 画像からピクセルの色を取得しますか?
- 9. フルスクリーンのOpenGLウィンドウからキーイベントを取得する方法は?
- 10. OpenGL ES 2.x:glDiscardFramebufferEXTの後にピクセルを読み取る方法は?
- 11. OS Xとctypes:CGDataProviderCopyData()から生のピクセルを取得する方法?
- 12. aframe:キャンバスからピクセルを取得する方法
- 13. SVGパスからピクセル座標を取得する方法String
- 14. OpenGLの2.0で特定の色のピクセルを読み取る
- 15. UIImageのピクセルを取得する方法
- 16. ggplot2では、値から色を取得する方法は?
- 17. 以前にバインドされたテクスチャからピクセルを取得する - OpenGL
- 18. OpenGL、ポイントの座標からZdepth値を取得する方法
- 19. 指定座標(OpenGL)でtexture1dの色を取得する方法は?
- 20. QGraphicsPixmapItemからピクセル位置と色を表示する方法
- 21. jQueryでx、yピクセルの色を取得
- 22. ピクセルからの色の取得とカラーコードの返信(16進数)
- 23. OpenGLとピクセル/ユニットの関係を取得する
- 24. Androidでタッチイベントを使用してピクセルからImageViewの色を取得する方法
- 25. Xamarin iOS:UIImageピクセルの色をピクセル単位で変更する方法
- 26. Texture2D XNAから各ピクセルの色の配列を取得しますか?
- 27. Networkx:グラフから属性の色を取得する方法
- 28. ブラックベリーでint値から色を取得する方法
- 29. OpenGLで単一のピクセルを描画する方法は?
- 30. OpenGL Androidの正確な色を取得するには?
美しいコード、短いと予想されるような作品。表示手順の中でピクセルの色をチェック/表示するためのコードを配置しました。それは速く動作しますが、図面がより複雑な場合、プログラムは正しく動作しません。上記のコードを[ここ]のようなモーションプロシージャ内に置くのはどうでしょうか?(http://en.wikibooks.org/wiki/Fractals/Computer_graphic_techniques/2D/gfile#Viewer_for_programmers) – Adam
@Adam:Yup、edited。 – genpfault