python openGL:如何更改网格的颜色?

2024-04-19 16:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始使用python和openGL进行一些3D图形实验,但我已经在努力尝试更改网格的颜色,因为我想要白色背景上的黑色网格。 我只是复制了pyqtgraph示例GLSurfacePlot.py并更改了行

g = gl.GLGridItem ()

对其中任何一个,但没有改变颜色:

g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = (0.0, 0.0, 0.0, 1.0) )
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = (1, 1, 0, 1) )
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = 'k')
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = pg.glColor((0.0, 0.0, 0.0, 1.0)) )
color = QtGui.QColor("b")
g = gl.GLGridItem (size = QtGui.QVector3D(10,10,1), color = color)

我做错了什么? 我已经赢了10,python 3.7,pygtgraph 0.10.0,PyopenGL 3.1.5,PyQt5 5.11.3

谢谢你的帮助

马丁


Tags: 图形网格示例size颜色coloropenglpyqtgraph
1条回答
网友
1楼 · 发布于 2024-04-19 16:34:41

不幸的是,这是GLGridItem中的一个bug,它在构造函数中没有使用color参数:

def __init__(self, size=None, color=None, antialias=True, glOptions='translucent'):
     GLGraphicsItem.__init__(self)
     self.setGLOptions(glOptions)
     self.antialias = antialias
     if size is None:
         size = QtGui.QVector3D(20,20,1)
     self.setSize(size=size)
     self.setSpacing(1, 1, 1)

绘制时直接设置透明度为30%的白色:

def paint(self):
    .......................
     glColor4f(1, 1, 1, .3)
    .......................

如果要设置网格的颜色,可以修改标准模块(在构造函数中使用颜色参数),或将代码从模块复制到代码中,并使用它而不是标准GLGridItem:

def __init__(self, size=None, color=None, antialias=True, glOptions='translucent'):
     GLGraphicsItem.__init__(self)
     self.setGLOptions(glOptions)
     self.color = color
     self.antialias = antialias
     if size is None:
         size = QtGui.QVector3D(20,20,1)
     self.setSize(size=size)
     self.setSpacing(1, 1, 1)

def paint(self):
    .......................
    if self.color is None:
       glColor4f(1, 1, 1, .3)
    else:
       glColor4f(*self.color)
    .......................

相关问题 更多 >