第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

PyOpenGL如何選擇顏色來(lái)繪制每個(gè)形狀?

PyOpenGL如何選擇顏色來(lái)繪制每個(gè)形狀?

Smart貓小萌 2022-08-02 15:46:29
我正在一個(gè)PyQt5 PyOpenGL項(xiàng)目進(jìn)行中。我正在嘗試用一堆彩色的實(shí)心立方體繪制一個(gè)白色線框立方體。線框立方體是從元組點(diǎn)列表和對(duì)這些點(diǎn)的元組引用列表中繪制的。實(shí)心立方體是從對(duì)點(diǎn)的元組引用列表中繪制的。下面是多維數(shù)據(jù)集代碼:class cube():    render = True    solid = False    color = (1, 1, 1)    def config(self, x, y, z, size = 0.1, solid = False, color = (1, 1, 1)):        self.solid = solid        self.color = color        self.size = size / 2        s = self.size        self.vertices = [                         (-s + x, s + y, -s + z),                         (s + x, s + y, -s + z),                         (s + x, -s + y, -s + z),                         (-s + x, -s + y, -s + z),                         (-s + x, s + y, s + z),                         (s + x, s + y, s + z),                         (s + x, -s + y, s + z),                         (-s + x, -s + y, s + z)                       ]        self.edges = [                      (0,1), (0,3), (0,4), (2,1),                      (2,3), (2,6), (7,3), (7,4),                      (7,6), (5,1), (5,4), (5,6)                     ]        self.facets = [                       (0, 1, 2, 3), (0, 1, 6, 5),                       (0, 3, 7, 4), (6, 5, 1, 2),                       (6, 7, 4, 5), (6, 7, 3, 2)                      ]    def show(self):        self.render = True    def hide(self):        self.render = False為了呈現(xiàn)多維數(shù)據(jù)集,我獲取類中保存的列表的大小,然后將多維數(shù)據(jù)集類的實(shí)例追加到該列表中。然后,我可以在追加之前使用大小來(lái)引用該實(shí)例。下面是渲染函數(shù)的代碼:mainWindowdef paintGL(self):    glLoadIdentity()    gluPerspective(45, self.width / self.height, 0.1, 110.0)    #set perspective?    glTranslatef(0, 0, self.zoomLevel)    #I used -10 instead of -2 in the PyGame version.    glRotatef(self.rotateDegreeV, 1, 0, 0)    #I used 2 instead of 1 in the PyGame version.    glRotatef(self.rotateDegreeH, 0, 0, 1)結(jié)果:
查看完整描述

1 回答

?
一只名叫tom的貓

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

http://img1.sycdn.imooc.com//62e8d68600019bc802420083.jpg

查看完整回答
反對(duì) 回復(fù) 2022-08-02
  • 1 回答
  • 0 關(guān)注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)