0
我想讀取屏幕上繪製的矩形的顏色,但是當我嘗試從座標讀取時,它看起來是從偏移量讀取它,但是此偏移量不一致。 (如果有幫助,我正在使用SDL2庫)我發現它正在反轉座標,例如如果y是0,它實際上是y_Max。glReadPixels正在讀取錯誤的位置
我需要知道如何從正確的座標系中讀取一個像素,我不在乎我使用的是什麼方法,但更快的方法是最優方法。
我不完全理解所有的代碼都在這裏被拋出,我很新的圖像,但我知道我投我的項目矩陣這裏,
glEnable(GL_TEXTURE_2D);
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexImage2D(GL_TEXTURE_2D, 0, image->format->BytesPerPixel, image->w, image->h, 0, GL_RGB, GL_UNSIGNED_BYTE, image->pixels);
glOrtho(0.0f, 640.0f, 480.0f, 0.0f, -1.0f, 1.0f);
,然後在這裏我畫我的矩形。
glColor3f(Chrome[0], Chrome[1], Chrome[2]);
glTranslatef(0, 0, 0.0f);
glBindTexture(GL_TEXTURE_2D, texture);
glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(x*128.0f, 0, 0.0f);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(128.0f*x+128, 0.0f, 0.0f);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(128.0f*x+128, 128.0f, 0.0f);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(x*128.0f, 128.0f, 0.0f);
glEnd();
glPopMatrix();
unsigned char pixel[3];
glReadPixels(5, 5, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixel);
std::cout << "R: " << (int)pixel[0] << std::endl;
std::cout << "G: " << (int)pixel[1] << std::endl;
std::cout << "B: " << (int)pixel[2] << std::endl;
std::cout << "X: " << std::endl;
std::cout << "Y: " << std::endl;
std::cout << std::endl;
我們需要知道您的Projection矩陣,以及是否以任何其他方式更改ModelView矩陣? – Vallentin
@Vallentin我編輯了我的代碼,我不改變我的模型查看任何其他方式。 –
你需要在投影模式下運行'glOrtho',你在做什麼?試試這個,'glMatrixMode(GL_PROJECTION); glLoadIdentity();'他們'glOrtho'然後回到ModelView'glMatrixMode(GL_MODELVIEW);'開始繪畫,閱讀等等。 – Dan