1
我想开发一个应用程序使用OpenGL 4.0和Qt 5.3,我想实现颜色选择QGLWidget中选择不同的模型。 所以基本上,当我发现一个鼠标点击,我:glReadPixels似乎在错误的坐标Qt
- 获取鼠标
- 的位置渲染场景
- 设置一个白色背景(
glClearColor
然后glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
- 我结合我的着色器程序
- 我绘制我的模型(每一个都有不同的颜色和自己的变换矩阵)
- 发布我的着色器程序
- 设置一个白色背景(
- 呼叫
glFlush
和glFinish
,以确保我已经完成渲染调用glReadPixels
- 呼叫
glReadPixels(mouse.x, window_height - mouse.y, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, data)
数据是一个GLubyte
数组长度的4
我的程序运行“以及”前,但是当我想要选择一个对象,我必须点击比模型更真实的位置。我试图交换缓冲区,以检查模型是否呈现在正确的位置,是的,他们是... 我也尝试呼吁glPixelStorei(GL_PACK_ALIGNMENT, x)
与x = 1,2,4,8之前glReadPixels
,但它似乎并没有影响它。
不要做“glFlush和glFinish”,因为OpenGL将在您下载数据之前完成所有命令。 – 2014-11-05 10:37:37
关闭一个错误? 'window_height - mouse.y - 1',因为'window_height'在窗口之外。也可能是QTs鼠标原点的问题(例如,您得到的是与父元素相关的问题)。尝试打印坐标并尝试点击'0,0'。 – jozxyqk 2014-11-05 11:06:54