1 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
OpenGL 是一個(gè)狀態(tài)引擎。設(shè)置狀態(tài)后,將一直保留該狀態(tài),直到再次更改狀態(tài),甚至在幀之外。當(dāng)前顏色是全局狀態(tài)。調(diào)用 glColor* 時(shí),將設(shè)置當(dāng)前顏色。
當(dāng)調(diào)用 glVertex* 時(shí),當(dāng)前的顏色、法線和紋理坐標(biāo)將與頂點(diǎn)相關(guān)聯(lián)。
這意味著,在指定頂點(diǎn)之前,必須設(shè)置正確的顏色。在繪制線框立方體之前,您錯(cuò)過(guò)了設(shè)置顏色屬性:
class mainWindow(QMainWindow): #Main class.
# [...]
def paintGL(self):
# [...]
if len(self.shapes) != 0:
glBegin(GL_LINES)
for s in self.shapes:
glColor3fv(s.color) # <------------------------
if s.render and not s.solid:
for e in s.edges:
for v in e:
glVertex3fv(s.vertices[v])
glEnd()
glBegin(GL_QUADS)
for s in self.shapes:
glColor3fv(s.color)
if s.render and s.solid:
for f in s.facets:
for v in f:
glVertex3fv(s.vertices[v])
glEnd()
請(qǐng)注意,在每次調(diào)用 之前不必設(shè)置當(dāng)前顏色。更改當(dāng)前顏色時(shí),只需設(shè)置一次即可。新顏色與以下所有頂點(diǎn)相關(guān)聯(lián)。glVertex3fv
添加回答
舉報(bào)