1

OpenGLES2.0のハロートライアングルの例を試しています。Qtを使用しているので、QGraphicsSceneを作成し、そのコードをQGraphicsItemとして追加しました。正しく描画されますが、外接する長方形を正しく取得できません。三角形の頂点は

GLfloat afVertices[] = 
{-0.4f,-0.4f,0.0f, 
 0.4f ,-0.4f,0.0f,
 0.0f ,0.4f ,0.0f};

私のビューポートはglViewport(0, 0, 800, 480);

正しい境界の長方形の座標は何でしょうか?

ビューポートをQGLWidgetに設定しました。QGraphicsItemの特徴は、アイテムの外接する四角形を再実装する必要があることです。

QRectF myGraphicsItem::boundingRect() const
{

   return QGraphicsItem::boundingRect();
} 

`QGraphicsItem :: boundingRect()const'への未定義の参照を示しています

もともと使っていた

QRectF myGraphicsItem::boundingRect() const
{
  return QRectF(-0.4, -0.4, 0.8, 0.8);
}

しかし、結果は非常に小さなバウンディングボックスになります。一見正しいものは、試行錯誤のような値を使ったときに作成されたQRectf(300, 200, 200, 200)ので、「手動」ではありません。そのため、私が気付いていない何らかの座標対応や変換があるのではないかと思いました。

4

3 に答える 3

2

QGraphicsItem::boundingRect()は純粋仮想関数です。したがって、実装はありません。独自の実装を提供する必要があります。あなたの頂点に基づいて、おそらく

QRectF myGraphicsItem::boundingRect() const
{
  return QRectF(-0.4, -0.4, 0.8, 0.8);
}
于 2011-06-15T03:18:38.873 に答える
0

QGraphicsItem (OpenGL ビューポートの有無にかかわらず) を使用している場合、通常はQGraphicsItem::boundingRect()を使用して外接する四角形を取得しますか?

于 2011-06-14T22:51:16.003 に答える