gpt4 book ai didi

c++ - glReadPixels 从错误的位置读取

转载 作者:行者123 更新时间:2023-11-28 02:57:44 25 4
gpt4 key购买 nike

我正在尝试读取屏幕上绘制的矩形的颜色,但是当我尝试从坐标读取时,它似乎是从一个偏移量读取的,但这个偏移量并不一致。 (我正在使用 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;

最佳答案

我不小心反转了我的 Y 值,只需在平面上反转即可修复。例如(ScreenWidth-mouse_y)

关于c++ - glReadPixels 从错误的位置读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21596815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com