Cara mengukur tekstur agar hanya menempati sebagian dari UI QQuickItem

Saya telah mengganti updatePaintNode dengan cara berikut untuk menggambar tekstur OpenGL pada kelas turunan QQuickItem yang disebut MyQQuickItem di sini.

QSGNode *MyQQuickItem::updatePaintNode(QSGNode * oldNode, QQuickItem::UpdatePaintNodeData * /*updatePaintNodeData*/) 
{
  QSGSimpleTextureNode * textureNode = static_cast<QSGSimpleTextureNode *>(oldNode);

  if (!textureNode) {
    textureNode = new QSGSimpleTextureNode();
  }

  QSize size(800, 800);
  // myTextureId is a GLuint here
  textureNode.reset(window()->createTextureFromId(myTextureId, size));
  textureNode->setTexture(my_texture);
  textureNode->markDirty(QSGBasicGeometryNode::DirtyMaterial);

  QSizeF myiewport = boundingRect().size();

  qreal xOffset = 0;
  qreal yOffset = 10;

  textureNode->setRect(xOffset, yOffset, myViewport.width(), myViewport.height());
  return textureNode;
}

Ini merender konten tekstur dengan baik tetapi mencakup keseluruhan MyQQuickItem UI saya.

Bagaimana cara mengurangi margin bawah tekstur hingga sesuai 80% dari tinggi dari MyQQuickItem. Saya ingin merender tekstur ke sebagian MyQQuickItem & membiarkan sisanya kosong atau hitam? Apakah itu mungkin dalam updatePaintNode.

Perhatikan bahwa ukuran tekstur bukanlah ukuran jendela UI di sini. Ukuran tekstur saya adalah 800 kali 800. Sedangkan ukuran jendela UI berbeda-beda dan bergantung pada layar.


person TheWaterProgrammer    schedule 04.09.2017    source sumber
comment
menemukan solusi untuk apa yang saya coba lakukan & posting & jawab. Jawaban lain yang dapat memberikan lebih banyak wawasan tentang cara kerja QSGSimpleTextureNode ini, dipersilakan.   -  person TheWaterProgrammer    schedule 05.09.2017


Jawaban (1)


Saya menemukan jawabannya:

Mengubah myViewport.height() memberikan hasil akhir yang diperlukan dalam arah Y yang ingin ditetapkan. Demikian pula, mengubah myViewport.width() memberikan hasil akhir yang diperlukan dalam arah X yang ingin ditetapkan.

4 parameter di setRect TextureNode dapat meregangkan & menyesuaikan tekstur sesuai keinginan seseorang dalam sebagian QQuickItem.

person TheWaterProgrammer    schedule 05.09.2017