0

マウスを表示して描画するためにOpenGLを使用します。すべて問題ないように見えますが、マウスを高速で描画すると、すべてのピクセルが描画されるわけではなく、ある程度の間隔が表示されます。ここに画像リンクを追加します。私の現在のmouseDraggedコードは非常に単純です:

- (void) mouseDragged:(NSEvent *)event
{
    location = [self convertPoint: [event locationInWindow] fromView:self];
    NSLog(@"current location (%g,%g)\n",location.y,location.x);
    [self drawSomething];
}

マウスの位置をより正確に登録するための解決策はありますか?または、currentMouseLocationとpreviousMouseLocationを登録する方法はありますか?iOS関数previousLocationInView:のようなもので、OpenGLに2点ごとに線を引くように指示できますか?

4

2 に答える 2

3

これを試して:

- (void) mouseDragged:(NSEvent *)event
{
    location = [self convertPoint: [event locationInWindow] fromView:self];

    NSLog(@"current location (%g,%g)\n",location.y,location.x);
    NSLog(@"previous location (%g,%g)\n",prev_location.y,prev_location.x);

    [self drawSomething];

    prev_location = location;
}
于 2012-06-26T07:04:42.240 に答える
1

「mouseDragged」では、マウスの以前の位置を保存したり、動的配列にポイントを保存するパス全体を追跡したりできます。これが、「前の場所」プロパティがない理由です。自分で作成できます。

マウスの感度などがあるため、いくつかのスキップは避けられません。できることは補間することだけです。つまり、(prevX, prevY) ​​から (thisX, thisY) に線を引く必要があります。すべてのポイントが保存されている場合は、ポリラインを描画するだけです。

于 2012-06-26T06:50:01.870 に答える