glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_POINTS);
glVertex2f(x,y);
glEnd();
glReadPixels(x, y, 1, 1, GL_RGB, GL_UNSIGNED_BYTE, pixel);
printf("after coloring %d %d %d\n", (int)pixel[0], (int)pixel[1] , (int)pixel[2]);
pixel[0]
,pixel[1]
和pixel[2]
的值在预期值为255, 0, 0
时为零。帮我解决这个问题:)
答案 0 :(得分:1)
这可能是由于许多问题所致
模型到NDC空间转换未设置为从顶点坐标到像素位置生成1:1映射
您确实尝试设置了这样的转换,但是由于舍入错误以及OpenGL像素中心有点不直观(它们在数学上有意义),您的点最终会出现在邻居像素中
读取缓冲区未设置为您要绘制的缓冲区(glDrawBuffer,glReadBuffer)
发布您的完整代码,我们可以重现并帮助您。
答案 1 :(得分:0)
我没有看到所有代码,但我想也许问题是你的x和y它在这里是浮点值glVertex2f(x,y);
而x和y小于1但是{{1}使用int参数并从float转换为int后,我们想要读取信息的像素坐标值不正确,所以如果你想使用真实像素坐标你可以使用glReadPixels
(更多信息)你可以在here中找到例如window heigh = 500和width = 500:
glOrtho