Opengl采摘不起作用

时间:2015-02-24 02:43:50

标签: opengl picking

我正在关注picking in opengl的教程。这是我的选择功能,

int size = 25;
GLuint buffer[size];

glSelectBuffer(size, buffer);
glRenderMode(GL_SELECT);
glPushMatrix();
glLoadIdentity();

glGetIntegerv(GL_VIEWPORT, viewport);
gluPickMatrix(x, viewport[3] - y, 1000, 1000, viewport);

gluPerspective(60, ratio, 0.001, 1000);
glMatrixMode(GL_MODELVIEW);
glInitNames();
//give dummy name
glPushName(0);

draw_scene(scene_root, true);

glPopName();
//stop picking
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glFlush();

GLint hits = glRenderMode(GL_RENDER);

我为gluPickMatrix使用1000,1000只是为了得到一个打击

draw_scene归结为

glLoadName(1); 
mProgram.setUniformValue(mMvpMatrixLocation, getCameraMatrix() * transform);
glDrawArrays(GL_TRIANGLES, 40, 40 + v->sphereSize/3);

获取getCameraMatrix()会返回代表我的相机投影的QMatrix4x4transform是代表我的模型坐标的QMatrix4x4`。

我的shader.vert看起来像这样

in vec3 vert;
uniform mat4 mvpMatrix;

void main()
{
   gl_Position = mvpMatrix * vec4(vert, 1.0);
}

注意mvpMatrixgetCameraMatrix() * transform

我暂时加载'1',因为我只有一个对象。

我的问题是尽管视口为1000x1000

,但它没有产生任何命中

编辑: 问题似乎是glRendmode(GL_SELECT)确实更改了渲染模式。我为此创建了另一个question

0 个答案:

没有答案