我正在尝试读取屏幕上绘制的矩形的颜色,但是当我尝试从坐标读取时,它似乎从偏移读取它但是这个偏移不一致。 (我正在使用SDL2库以防万一)我发现它正在反转坐标,例如如果y为0,则实际上是y_Max。
我需要知道如何从正确的坐标读取像素,我不关心我使用的是哪种方法,但更快的方法是最佳的。
我不完全理解这里抛出的所有代码,我对图像很新,但我知道我在这里投射了我的项目矩阵,
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;
答案 0 :(得分:2)
我意外地反转了我的Y值,只是通过在飞机上反转来固定。例如(ScreenWidth-mouse_y)