OpenGL中的螢幕座標和世界座標的轉換

2021-06-05 01:54:40 字數 1044 閱讀 8316

glint    viewport[4]; 

gldouble modelview[16];

gldouble projection[16];

glfloat winx, winy, winz;

gldouble posx, posy, posz;

glpushmatrix();

// 變換要繪圖函式裡的順序一樣,否則座標轉換會產生錯誤

glscalef(m_srtmatrix[0], m_srtmatrix[1], m_srtmatrix[2]); // 縮放、平移、旋轉變換

glrotatef(m_srtmatrix[3], 1.0f, 0.0f, 0.0f);

glrotatef(m_srtmatrix[4], 0.0f, 1.0f, 0.0f);

glrotatef(m_srtmatrix[5], 0.0f, 0.0f, 1.0f);

gltranslatef(m_srtmatrix[6], m_srtmatrix[7], m_srtmatrix[8]);

glgetintegerv(gl_viewport, viewport); // 得到的是最後乙個設定視口的引數

glgetdoublev(gl_modelview_matrix, modelview);

glgetdoublev(gl_projection_matrix, projection);

glpopmatrix();

winx = x;

winy = screenheight - y;

glreadpixels((int)winx, (int)winy, 1, 1, gl_depth_component, gl_float, &winz);

gluunproject(winx, winy, winz, modelview, projection, viewport, &posx, &posy, &posz);

gluunproject()

gluproject()

螢幕座標到opengl世界座標轉換

螢幕座標到opengl世界座標轉換

很多人用opengl繪圖會遇到乙個問題即螢幕座標向opengl座標轉換,在網上流傳著如下類似的 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz gldouble posx,pos...

螢幕座標到opengl世界座標轉換

很多人用opengl繪圖會遇到乙個問題即螢幕座標向opengl座標轉換,在網上流傳著如下類似的 glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz gldouble posx,pos...

opengl 螢幕座標

建立opengl模型過程 opengl座標變換很有特點,為了簡單描述先定義2個座標系 1 世界座標系 無論如何變換,世界座標系都不動,以螢幕中心為原點 0,0,0 你面對螢幕,你的右邊是x正軸,上面是y正軸,螢幕指向你的為z正軸。2 當前繪圖座標系 即區域性座標系 當前繪圖座標系是繪製物體時的座標系...