Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl GLViewWidget视口大小_Opengl_Viewport_Pyqt5_Pyqtgraph_Maximize - Fatal编程技术网

Opengl GLViewWidget视口大小

Opengl GLViewWidget视口大小,opengl,viewport,pyqt5,pyqtgraph,maximize,Opengl,Viewport,Pyqt5,Pyqtgraph,Maximize,我无法将视口设置为所需的尺寸。尽管指定了(1980 x 1080),但合成尺寸为(1366 x 855)。pyqtgraph中的3D示例也不显示全屏,仅位于左下角 import pyqtgraph.opengl as gl from PyQt5 import QtWidgets from pyqtgraph.Qt import QtCore app = QtWidgets.QApplication([]) view = gl.GLViewWidget() view.opts['vie

我无法将视口设置为所需的尺寸。尽管指定了(1980 x 1080),但合成尺寸为(1366 x 855)。pyqtgraph中的3D示例也不显示全屏,仅位于左下角

import pyqtgraph.opengl as gl
from PyQt5 import QtWidgets
from pyqtgraph.Qt import QtCore    

app = QtWidgets.QApplication([])

view = gl.GLViewWidget()
view.opts['viewport'] =  (0, 0, 1920, 1080)
view.showMaximized()

view.setMaximumSize(1920, 1080)
print ("%d %d" % (view.height() ,  view.width()))
view.setWindowTitle('3D Matrix Visualization')


## create three grids, add each to the view
xgrid = gl.GLGridItem()
ygrid = gl.GLGridItem()
zgrid = gl.GLGridItem()
view.addItem(xgrid)
view.addItem(ygrid)
view.addItem(zgrid)

## rotate x and y grids to face the correct direction
xgrid.rotate(90, 0, 1, 0)
ygrid.rotate(90, 1, 0, 0)

## scale each grid differently
xgrid.scale(0.2, 0.1, 0.1)
ygrid.scale(0.2, 0.1, 0.1)
zgrid.scale(0.1, 0.2, 0.1)
如果在不更改视口设置的情况下运行代码,则父窗口将凭借
showmimized()
全屏显示。但可绘制区域仅限于屏幕左下角的1/4

view.opts['viewport']=(0,0,1920,1080)

使用上面的代码,确实会使可绘制区域变大,但它不足以覆盖最大化的屏幕。它是1366x855。栅格/轴显示在右上角,而不是1366x855的中心。在默认模式下,栅格/轴显示在1/4可绘制区域的中心


非常感谢您的帮助。

GLViewWidget是QtOpenGL.QGLWidget的子类,如中所示


因此,也许我们可以使用
view.setFixedSize(parent的宽度,parent的高度)
在调整父窗口小部件的大小时调整视口的大小。

对于带有视网膜显示的Mac:问题可能是Mac在进行高DPI缩放时试图使用虚拟分辨率,而pyqtgraph使用物理分辨率

它应该在最新的pyqtgraph github branch()中修复,但最新的PYPI版本自2016年以来一直没有更新,因此请根据官方建议尝试直接从github安装pip:

pip install git+https://github.com/pyqtgraph/pyqtgraph

您是否通过将glClearColor设置为可见的颜色(如红色)来检查实际可绘制区域?您是否尝试在渲染代码中直接调用glViewport?尝试了这两种方法,但似乎没有效果
glClearColor(1,1,0,1)
glViewport(0,028801800)
这是视网膜屏幕吗?MacOS X有一些关于窗口/视图大小和视口尺寸的wierd规则。如果不是这样的话,除了阅读GLGridItem的源代码之外,我已经没有其他想法了。它确实增加了可绘制的视口区域,但所有内容都在屏幕外转换。我可以通过点击和试用将网格转换为中心,但我需要转换所有内容。很烦人。我阅读了
GLViewWidget
的代码,这就是我如何找到
'viewport'
选项的原因。
viewport
的默认选项
None
应该包含整个小部件,但它在左下角限制为1/4。这就是为什么我求助于
viewport
选项,但它也不起作用。我是Python及其库的新手(2天),考虑到它们太多,我觉得我最终只能求助于2D图形,因为它不使用OpenGL。3D是的。也可以是VisPy或Plotly for 3D。MatPlotLib速度很慢,尽管每个人似乎都相信它,但它需要一些快速、双缓冲的东西,比如PyQtGraph。