def renderTexture(texture, x, y, width, height): bgl.glEnable(bgl.GL_BLEND) #bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) texture.gl_load() bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode[0]) bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST) bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(x, y) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(x, y + height) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(x + width, y + height) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(x + width , y) bgl.glEnd() texture.gl_free()
def draw(self, context, render=False): if self.image is None: return bgl.glPushAttrib(bgl.GL_ENABLE_BIT) p0 = self.pts[0] p1 = self.pts[1] bgl.glEnable(bgl.GL_BLEND) bgl.glColor4f(*self.colour) bgl.glRectf(p0.x, p0.y, p1.x, p1.y) self.image.gl_load() bgl.glEnable(bgl.GL_BLEND) bgl.glBindTexture(bgl.GL_TEXTURE_2D, self.image.bindcode[0]) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST) bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) # bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(p0.x, p0.y) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(p0.x, p1.y) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(p1.x, p1.y) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(p1.x, p0.y) bgl.glEnd() self.image.gl_free() bgl.glDisable(bgl.GL_TEXTURE_2D)
def renderTexture(texture, x, y, width, height): bgl.glEnable(bgl.GL_BLEND) #bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) texture.gl_load() bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode[0]) bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST) bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(x, y) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(x, y + height) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(x + width, y + height) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(x + width, y) bgl.glEnd() texture.gl_free()
def draw_button_icon(self): if self.icon != "": bgl.glEnable(bgl.GL_BLEND) texture = bpy.data.images.load(filepath=self.icon) err = texture.gl_load(filter=bgl.GL_NEAREST, mag=bgl.GL_NEAREST) assert not err, 'OpenGL error: %i' % err bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode[0]) bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(self.x_location + ICON_MARGIN_X, self.y_location) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(self.x_location + ICON_MARGIN_X, self.y_location + ICON_HEIGHT) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(self.x_location + ICON_MARGIN_X + ICON_WIDTH, self.y_location + ICON_HEIGHT) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(self.x_location + ICON_MARGIN_X + ICON_WIDTH, self.y_location) bgl.glEnd() bgl.glDisable(bgl.GL_TEXTURE_2D) bgl.glDisable(bgl.GL_BLEND) texture.gl_free()
def draw_textured(self): """ call this draw function only if morphs uses texture """ if self.texture != None: self.texture.gl_load() bgl.glBindTexture(bgl.GL_TEXTURE_2D, self.texture.bindcode) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST) #GL_LINEAR seems to be used in Blender for background images bgl.glEnable(bgl.GL_TEXTURE_2D) #bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) bgl.glColor4f(*self.color) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0,0) bgl.glVertex2d(self.get_position().x,self.get_position().y) bgl.glTexCoord2d(0,1) bgl.glVertex2d(self.get_position().x,self.get_position().y+self.get_height()) bgl.glTexCoord2d(1,1) bgl.glVertex2d(self.get_position().x+self.get_width(),self.get_position().y+self.get_height()) bgl.glTexCoord2d(1,0) bgl.glVertex2d(self.get_position().x+self.get_width(),self.get_position().y) bgl.glEnd() bgl.glDisable(bgl.GL_BLEND) bgl.glDisable(bgl.GL_TEXTURE_2D) self.texture.gl_free() return
def drawMenuItem(item, x, y, width, height): global iconWidth global iconHeight iconMarginX = 4 iconMarginY = 4 textMarginX = 6 textHeight = 16 textWidth = 72 bgl.glEnable(bgl.GL_BLEND) if item['highlighted']: bgl.glColor4f(0.555, 0.555, 0.555, 0.8) else: bgl.glColor4f(0.447, 0.447, 0.447, 0.8) bgl.glRectf(x, y, x + width, y + height) texture = item['icon'] texture.gl_load() bgl.glColor4f(0.0, 0.0, 1.0, 0.5) #bgl.glLineWidth(1.5) #------ TEXTURE ---------# bgl.glEnable(bgl.GL_BLEND) bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode[0]) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri( bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST ) #GL_LINEAR seems to be used in Blender for background images bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(x + iconMarginX, y) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(x + iconMarginX, y + iconHeight) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(x + iconMarginX + iconWidth, y + iconHeight) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(x + iconMarginX + iconWidth, y) bgl.glEnd() texture.gl_free() # draw some text font_id = 0 blf.position(font_id, x + iconMarginX + iconWidth + textMarginX, y + iconHeight * 0.5 - 0.25 * textHeight, 0) blf.size(font_id, textHeight, textWidth) blf.draw(font_id, item['text'])
def drawMenuItem(item, x, y, width, height): global iconWidth global iconHeight iconMarginX = 4 iconMarginY = 4 textMarginX = 6 textHeight = 16 textWidth = 72 bgl.glEnable(bgl.GL_BLEND) if item["highlighted"]: bgl.glColor4f(0.555, 0.555, 0.555, 0.8) else: bgl.glColor4f(0.447, 0.447, 0.447, 0.8) bgl.glRectf(x, y, x + width, y + height) texture = item["icon"] texture.gl_load() bgl.glColor4f(0.0, 0.0, 1.0, 0.5) # bgl.glLineWidth(1.5) # ------ TEXTURE ---------# bgl.glEnable(bgl.GL_BLEND) bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri( bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST ) # GL_LINEAR seems to be used in Blender for background images bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(x + iconMarginX, y) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(x + iconMarginX, y + iconHeight) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(x + iconMarginX + iconWidth, y + iconHeight) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(x + iconMarginX + iconWidth, y) bgl.glEnd() texture.gl_free() # draw some text font_id = 0 blf.position(font_id, x + iconMarginX + iconWidth + textMarginX, y + iconHeight * 0.5 - 0.25 * textHeight, 0) blf.size(font_id, textHeight, textWidth) blf.draw(font_id, item["text"])
def draw(self, highlighted: bool): bgl.glEnable(bgl.GL_BLEND) if highlighted: bgl.glColor4f(0.555, 0.555, 0.555, 0.8) else: bgl.glColor4f(0.447, 0.447, 0.447, 0.8) bgl.glRectf(self.x, self.y, self.x + self.width, self.y + self.height) texture = self.icon err = texture.gl_load(filter=bgl.GL_NEAREST, mag=bgl.GL_NEAREST) assert not err, 'OpenGL error: %i' % err bgl.glColor4f(0.0, 0.0, 1.0, 0.5) # bgl.glLineWidth(1.5) # ------ TEXTURE ---------# bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode[0]) bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) bgl.glColor4f(1, 1, 1, 1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(self.x + self.icon_margin_x, self.y) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(self.x + self.icon_margin_x, self.y + ICON_HEIGHT) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(self.x + self.icon_margin_x + ICON_WIDTH, self.y + ICON_HEIGHT) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(self.x + self.icon_margin_x + ICON_WIDTH, self.y) bgl.glEnd() bgl.glDisable(bgl.GL_TEXTURE_2D) bgl.glDisable(bgl.GL_BLEND) texture.gl_free() # draw some text font_id = 0 blf.position( font_id, self.x + self.icon_margin_x + ICON_WIDTH + self.text_margin_x, self.y + ICON_HEIGHT * 0.5 - 0.25 * self.text_height, 0) blf.size(font_id, self.text_height, self.text_width) blf.draw(font_id, self.label_text)
def aabox_with_texture(v1: Float2, v2: Float2): """Draw an axis-aligned box with a texture.""" bgl.glColor4f(1.0, 1.0, 1.0, 1.0) bgl.glEnable(bgl.GL_TEXTURE_2D) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0, 0) bgl.glVertex2d(v1[0], v1[1]) bgl.glTexCoord2d(0, 1) bgl.glVertex2d(v1[0], v2[1]) bgl.glTexCoord2d(1, 1) bgl.glVertex2d(v2[0], v2[1]) bgl.glTexCoord2d(1, 0) bgl.glVertex2d(v2[0], v1[1]) bgl.glEnd() bgl.glDisable(bgl.GL_TEXTURE_2D)
def draw(self,context): global iterations global texture global height global width texture.gl_load() bgl.glEnable(bgl.GL_BLEND) bgl.glColor4f(0.0, 0.0, 0.0, 0.5) bgl.glLineWidth(1.5) #------ TEXTURE ---------# bgl.glBindTexture(bgl.GL_TEXTURE_2D, texture.bindcode) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MIN_FILTER, bgl.GL_NEAREST) bgl.glTexParameteri(bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_NEAREST) #GL_LINEAR seems to be used in Blender for background images bgl.glEnable(bgl.GL_TEXTURE_2D) #bgl.glBlendFunc(bgl.GL_SRC_ALPHA, bgl.GL_ONE_MINUS_SRC_ALPHA) bgl.glColor4f(1,1,1,1) bgl.glBegin(bgl.GL_QUADS) bgl.glTexCoord2d(0,0) bgl.glVertex2d(0 + iterations ,100 ) bgl.glTexCoord2d(0,1) bgl.glVertex2d(0+iterations ,100 + height) bgl.glTexCoord2d(1,1) bgl.glVertex2d(0 + iterations + width, 100 + height ) bgl.glTexCoord2d(1,0) bgl.glVertex2d(0 + iterations + width , 100) bgl.glEnd() bgl.glDisable(bgl.GL_BLEND) bgl.glDisable(bgl.GL_TEXTURE_2D) texture.gl_free() # restore opengl defaults bgl.glLineWidth(1) bgl.glDisable(bgl.GL_BLEND) bgl.glColor4f(0.0, 0.0, 0.0, 1.0)