Example #1
0
def draw_texture(x, y, w, h, texture, mode=None):
    mode_bak = bgl.Buffer(bgl.GL_INT, 1)
    bgl.glGetIntegerv(bgl.GL_DRAW_BUFFER, mode_bak)
    if mode is not None:
        bgl.glDrawBuffer(mode)

    bgl.glEnable(bgl.GL_TEXTURE_2D)
    bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture)

    bgl.glColor4d(1.0, 1.0, 1.0, 1.0)
    bgl.glBegin(bgl.GL_TRIANGLE_FAN)
    bgl.glTexCoord2d(0.0, 0.0)
    bgl.glVertex2i(x, y)
    bgl.glTexCoord2d(1.0, 0.0)
    bgl.glVertex2i(x + w, y)
    bgl.glTexCoord2d(1.0, 1.0)
    bgl.glVertex2i(x + w, y + h)
    bgl.glTexCoord2d(0.0, 1.0)
    bgl.glVertex2i(x, y + h)
    bgl.glEnd()

    bgl.glDisable(bgl.GL_TEXTURE_2D)
    bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0)

    if mode is not None:
        bgl.glDrawBuffer(mode_bak[0])
Example #2
0
def draw_texture(x, y, w, h, texture, mode=None):
    mode_bak = bgl.Buffer(bgl.GL_INT, 1)
    bgl.glGetIntegerv(bgl.GL_DRAW_BUFFER, mode_bak)
    if mode is not None:
        bgl.glDrawBuffer(mode)

    bgl.glEnable(bgl.GL_TEXTURE_2D)
    bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture)

    bgl.glColor4d(1.0, 1.0, 1.0, 1.0)
    bgl.glBegin(bgl.GL_TRIANGLE_FAN)
    bgl.glTexCoord2d(0.0, 0.0)
    bgl.glVertex2i(x, y)
    bgl.glTexCoord2d(1.0, 0.0)
    bgl.glVertex2i(x + w, y)
    bgl.glTexCoord2d(1.0, 1.0)
    bgl.glVertex2i(x + w, y + h)
    bgl.glTexCoord2d(0.0, 1.0)
    bgl.glVertex2i(x, y + h)
    bgl.glEnd()

    bgl.glDisable(bgl.GL_TEXTURE_2D)
    bgl.glBindTexture(bgl.GL_TEXTURE_2D, 0)

    if mode is not None:
        bgl.glDrawBuffer(mode_bak[0])
    def draw_postview(self, context, mesh, isBaseMesh):
        #mesh = self.mesh #temporary in case we decide it should be named differently
        a1 = 1.0
        a2 = 1.0
        if isBaseMesh and self.sublvl > 0:
            a1 = 0.5
            a2 = .75

        bgl.glEnable(bgl.GL_POINT_SMOOTH)
        bgl.glEnable(bgl.GL_BLEND)

        #draw the vertices
        for v in mesh.vertices:
            if v in self.selected:
                bgl.glColor4d(0.9, 0.5, 0, a2)
                bgl.glPointSize(4)
            else:
                bgl.glColor4d(1, 1, 0, a1)
                bgl.glPointSize(2)

            bgl.glBegin(bgl.GL_POINTS)
            bgl.glVertex3f(*v.co.to_tuple())
            bgl.glEnd()

        bgl.glDepthRange(0.0, 0.9999)
        #draw the edges
        for e in mesh.edges:
            if e in self.selected:
                bgl.glColor4d(0.9, 0.5, 0, a2)
                bgl.glLineWidth(2)
            else:
                bgl.glColor4d(0.5, 0.5, 0, a1)
                bgl.glLineWidth(1)

            bgl.glBegin(bgl.GL_LINES)
            bgl.glVertex3f(*e.v0.co.to_tuple())
            bgl.glVertex3f(*e.v1.co.to_tuple())
            bgl.glEnd()
        bgl.glDepthRange(0.0, 1.0)

        #draw the faces
        bgl.glBegin(bgl.GL_TRIANGLES)

        for f in mesh.faces:
            if f in self.selected:
                bgl.glColor4d(0.6, 0.2, 0, a2)
            else:
                bgl.glColor4d(0.3, 0.3, 0.3, a1)
            a = 0
            b = 1
            c = 2
            for i in range(len(f.lvertices) - 2):
                bgl.glVertex3f(*f.lvertices[a].co.to_tuple())
                bgl.glVertex3f(*f.lvertices[b].co.to_tuple())
                bgl.glVertex3f(*f.lvertices[c].co.to_tuple())
                b += 1
                c += 1

        bgl.glEnd()

        if False:
            bgl.glColor3f(0, 1, 1)
            bgl.glBegin(bgl.GL_LINES)
            for f in mesh.faces:
                p0 = Vector()
                for v in f.lvertices:
                    p0 += v.co
                p0 /= len(f.lvertices)
                p1 = p0 + f.normal * 0.2
                bgl.glVertex3f(*p0)
                bgl.glVertex3f(*p1)
            bgl.glEnd()
    def draw_postview(self, context, mesh, isBaseMesh):
        #mesh = self.mesh #temporary in case we decide it should be named differently
        a1 = 1.0
        a2 = 1.0
        if isBaseMesh and self.sublvl > 0:
            a1 = 0.5
            a2 = .75

        bgl.glEnable(bgl.GL_POINT_SMOOTH)
        bgl.glEnable(bgl.GL_BLEND)

        #draw the vertices
        for v in mesh.vertices:
            if v in self.selected:
                bgl.glColor4d(0.9,0.5,0, a2)
                bgl.glPointSize(4)
            else:
                bgl.glColor4d(1, 1, 0, a1)
                bgl.glPointSize(2)

            bgl.glBegin(bgl.GL_POINTS)
            bgl.glVertex3f(*v.co.to_tuple())
            bgl.glEnd()


        bgl.glDepthRange(0.0, 0.9999)
        #draw the edges
        for e in mesh.edges:
            if e in self.selected:
                bgl.glColor4d(0.9,0.5,0, a2)
                bgl.glLineWidth(2)
            else:
                bgl.glColor4d(0.5, 0.5, 0, a1)
                bgl.glLineWidth(1)

            bgl.glBegin(bgl.GL_LINES)
            bgl.glVertex3f(*e.v0.co.to_tuple())
            bgl.glVertex3f(*e.v1.co.to_tuple())
            bgl.glEnd()
        bgl.glDepthRange(0.0, 1.0)


        #draw the faces
        bgl.glBegin(bgl.GL_TRIANGLES)

        for f in mesh.faces:
            if f in self.selected:
                bgl.glColor4d(0.6,0.2,0, a2)
            else:
                bgl.glColor4d(0.3, 0.3, 0.3, a1)
            a = 0
            b = 1
            c = 2
            for i in range(len(f.lvertices)-2):
                bgl.glVertex3f(*f.lvertices[a].co.to_tuple())
                bgl.glVertex3f(*f.lvertices[b].co.to_tuple())
                bgl.glVertex3f(*f.lvertices[c].co.to_tuple())
                b += 1
                c += 1

        bgl.glEnd()

        if False:
            bgl.glColor3f(0,1,1)
            bgl.glBegin(bgl.GL_LINES)
            for f in mesh.faces:
                p0 = Vector()
                for v in f.lvertices:
                    p0 += v.co
                p0 /= len(f.lvertices)
                p1 = p0 + f.normal * 0.2
                bgl.glVertex3f(*p0)
                bgl.glVertex3f(*p1)
            bgl.glEnd()