私の写真を添付したように、「Xウィンドウの各コーナーのウィンドウ化されたウィンドウの画面座標」を取得したいと思います。(次の画像で、スクリーン座標として取得したい赤い点を描画します。後で行うことは、OpenGL ウィンドウの正確な中間点を 2D スクリーン座標で取得することです。
私はすでに次のコードを試しました:
int* getWindowPos(Display *dpy) { int winPos[2];
Window myWin; myWin = XRootWindow(dpy, 0); XWindowAttributes xwa; XGetWindowAttributes(dpy, myWin, &xwa); // printf("%d %d\n", xwa.x, xwa.y); return winPos; }
しかし、この「XWindowAttributes」は常に、x ポイントで 0、y ポイントで 0、幅 1600、高さ 900 を提供します。これは私の画面解像度と同じです。
以下は、このウィンドウ付きウィンドウを作成するためにコーディングしたものです。
GLWin.win = XCreateWindow(GLWin.dpy, RootWindow(GLWin.dpy, vi->screen), 0, 0, 800, 600, 0, vi->depth, InputOutput, vi->visual, CWBorderPixel | CWColormap | CWEventMask, &GLWin.attr);