私はこれにしばらく苦労しており、すべての選択肢を使い果たしたように感じているので、誰かが私を助けてくれることを願っています;
一連の DDS ファイルをロードし、それらを QImage オブジェクトに変換して QGraphicsView に表示しようとしています。ここまでは順調に進んできましたが、今は越えられない壁にぶつかっています。これまでにこれらのリソースを参照しましたが、問題を解決できませんでした:
def readDDSFile(self, filePath, width, height):
glWidget = QGLWidget()
glWidget.makeCurrent()
glWidget.setGeometry(0,0,width,height) # init width and height, in an attempt to force the widget to be the same size as the texture
# works fine, DDS file loads without problem
texture = glWidget.bindTexture(filePath)
if not texture:
return QtGui.QImage()
# Determine the size of the DDS image
glBindTexture(GL_TEXTURE_2D, texture)
self._width = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH)
self._height = glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT)
if self._width == 0 and self._height == 0:
return QtGui.QImage()
# up to here, everything works fine, DDS files are being loaded, and, in the line below, rendered. They're just being rendered way too small.
glWidget.drawTexture(QtCore.QRectF(-1,-1,2,2), texture)
return (glWidget.grabFrameBuffer())
そして、基本的に同じことをしている古いGoogleグループの議論の束(それはすべて最後のリンクから始まったようです)
現在、PyQt5、Python バージョン 3.5.0 を使用しています
問題はこれです:PyaQt5では、QGLPixelBufferはサポートされていないようです(インポートしようとしているモジュールに関係なく、とにかくインポートできないようですので、そうであると思います)ので、レンダリング プラットフォームとしての QGLWidget。ただし、上記のコードでは、テクスチャのサイズが正しく設定されていないようです。私が何をしても、それらは一貫して小さすぎます。
私はこのコードを techartists スレッドから取得しました (ほとんどの場合)。そこで何が起こっているのか理解できれば、そこに問題がある可能性が高いと思います。
誰かがこれについて何か考えを持っているなら、私はそれを大いに感謝します...
乾杯