[英]X11 XMoveWindow with SDL 1.2 does NOT move window
我正在雙屏設置。 屏幕位於一個屏幕上。 我在SDL中創建一個窗口,該窗口是兩個屏幕的總和。 該窗口出現在“底部”屏幕的左上方。 我希望它位於TOP屏幕的左上方。 當我嘗試使用XMoveWindow移動它時,它會在其中移動圖像,而不是移動窗口。 我正在渲染OpenGL場景。 我使用的是Linux和SDL 1.2,我知道這是有問題的,但是我無法使用SDL2。
有什么想法嗎?
我有一個創建的SDL窗口
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER | SDL_INIT_NOPARACHUTE);
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
screen = SDL_SetVideoMode(w, h, 32, SDL_HWACCEL | SDL_OPENGL | SDL_GL_DOUBLEBUFFER);
但是,當我運行我的程序時,窗口將保留在原處,並且其中的圖像已偏移200-200。
#include <SDL/SDL.h>
#include <SDL/SDL_syswm.h>
#include <GL/gl.h>
#include <X11/Xlib.h>
void move()
{
SDL_SysWMinfo info;
SDL_VERSION(&info.version);
if (SDL_GetWMInfo(&info))
{
// Put the window at origin!!!!!
cout << "xmovewindow: " << XMoveWindow(info.info.x11.display, info.info.x11.window, 200, -200) << endl;
// prints "xmovewindow: 1"
}
}
!
我也在努力實現這一目標,似乎只有一種骯臟的方式。
您必須使用SDL_SetVideoMode()
,它可以按照SDL文檔中所述進行操作 。
嘗試這個:
SDL_putenv(const_cast<char*>("SDL_VIDEO_CENTERED="));
SDL_putenv(const_cast<char*>("SDL_VIDEO_WINDOW_POS=100,50"));
SDL_SetVideoMode(width, height, bpp, flags);
但是,如果視頻模式已經相同且具有相同的高度和高度,則這將無效!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.