1

Ubuntu で SDL OpenGL アプリケーションを開発していますが、新しいウィンドウ サイズが設定されているときのマウス範囲に問題があることに気付きました。私のアプリケーションの初期サイズは 600x400 で、マウス範囲 (x,y) はこれを反映しています。ただし、ユーザーが画面を他のサイズに変更すると (所定の事前定義されたサイズを使用)、マウスの範囲は依然として 600x400 の画面サイズのみを反映し、マウス位置機能に問題が発生します。

新しい解像度を設定するには、次のように呼び出します: SDL_SetVideoMode(Width, Height, 32, SDL_OPENGL);私の理解では、これはマウス範囲のサイズ変更を処理する必要がありますが、Linux ではそうしないようです。誰でもこの問題の解決策を教えてもらえますか?

注: 考えられるハックは、SDL を終了し、次を使用して再初期化することです。SDL_Init(SDL_INIT_EVERYTHING);

4

2 に答える 2

1

SDL_GetMouseState(0,0)掘り下げた後、マウスの範囲の再計算を明らかに妨げていたサイズの変更が行われた後、後で呼び出していたことが問題であることがわかりました。ただし、SDL ソースを確認しましたが、これがどのように影響するかを実際に判断することはできません。マウスの状態の切り替えが原因である可能性があります。

于 2012-08-24T12:07:20.487 に答える
0

ウィンドウのサイズを変更するたびに、次のコマンドを実行してビューポートを更新します。

m_ParentWindow = SDL_SetVideoMode( m_width, m_height, m_depth, m_SDL_Vid_Flags );

glViewport(0,0,m_width,m_height);

Clear();

Clear が呼び出す場所:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
于 2012-08-23T15:40:22.877 に答える