1
我有一個函數可以在三維空間中用鼠標座標創建一個向量。OpenGl獲取鼠標位置
這裏是我的代碼:
void myMouse(int x, int y){
GLint viewport[4];
GLdouble modelview[16];
GLdouble projection[16];
GLfloat winX, winY, winZ;
GLdouble posX, posY, posZ;
glGetDoublev(GL_MODELVIEW_MATRIX, modelview);
glGetDoublev(GL_PROJECTION_MATRIX, projection);
glGetIntegerv(GL_VIEWPORT, viewport);
winX = (float)x;
winY = (float)viewport[3] - (float)y; // Subtract The Current Mouse Y Coordinate
glReadPixels(x, winY, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &winZ);//Reads the depth buffer
gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);
vector.x=posX;
vector.y=posY;
vector.z=posZ;
}
然後,將載體作爲吸引一些點是I'draw。如果我將z位置設置爲0,代碼運行得非常好,但是當我旋轉場景時點不跟隨鼠標的光標。但是,如果我將vector.z設置爲上面的代碼,則粒子開始向我移動,然後它們消失(即它們落在視點之後)。
我希望我的觀點只能在z軸指向我時在x/y軸上跟隨鼠標,在y軸指向我時在x/z軸上跟隨鼠標,在y/z上指向y/z軸當x軸指向我時,它是一個軸。
或者,我怎樣才能在距離我的觀點的固定距離上設置z位置?
在調用'glGet *()'之前,您是否旋轉了矩陣......如果不是這可能是您的問題。 – Vallentin
我該如何旋轉它們? – user3098549
「,但是當我旋轉場景時點不跟隨鼠標的光標」...在調用'glGet *()'之前旋轉嗎? – Vallentin