当前位置: 首页>>代码示例>>Python>>正文


Python Texture.bind方法代码示例

本文整理汇总了Python中Texture.Texture.bind方法的典型用法代码示例。如果您正苦于以下问题:Python Texture.bind方法的具体用法?Python Texture.bind怎么用?Python Texture.bind使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Texture.Texture的用法示例。


在下文中一共展示了Texture.bind方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: testRenderToTexture

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]
  def testRenderToTexture(self):
    scale = 4
    fullwidth, fullheight = 512, 512
    width, height = int(fullwidth / scale), int(fullheight / scale)
    t = Texture()
    self.e.svg.setProjection((0, 0, fullwidth, fullheight))
    
    t.prepareRenderTarget(width, height)
    t.setAsRenderTarget()
    glViewport(0, 0, width, height)
    glClear(GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
    self.svg.transform.translate(width * scale / 2, height * scale / 2)
    self.svg.transform.rotate(3.141592)
    self.svg.draw()
    t.resetDefaultRenderTarget()

    glViewport(0, 0, fullwidth, fullheight)
    glMatrixMode(GL_PROJECTION)
    glLoadIdentity()
    gluOrtho2D(0.0, 1.0, 0.0, 1.0)
    glMatrixMode(GL_MODELVIEW)
    glLoadIdentity()

    t.bind()
    glEnable(GL_TEXTURE_2D)
    if not t.framebuffer.emulated:
      glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)

    glClear(GL_COLOR_BUFFER_BIT)
    glColor3f(1.0, 1.0, 1.0)
    glBegin(GL_TRIANGLE_STRIP)
    glTexCoord2f(0.0, 0.0)
    glVertex2f(0.0, 0.0)
    glTexCoord2f(1.0, 0.0)
    glVertex2f(1.0, 0.0)
    glTexCoord2f(0.0, 1.0)
    glVertex2f(0.0, 1.0)
    glTexCoord2f(1.0, 1.0)
    glVertex2f(1.0, 1.0)
    glEnd()

    self.e.video.flip()
    import time
    time.sleep(2)
开发者ID:fretsonfire,项目名称:fof-python,代码行数:47,代码来源:SvgTest.py

示例2: ImgDrawing

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........
            y = y - ((self.pixelSize[1] * abs(self.scale[1]))*.5*(self.context.geometry[3]/SCREEN_HEIGHT))
        elif fit == BOTTOM: #y is on bottom
            y = y + ((self.pixelSize[1] * abs(self.scale[1]))*.5*(self.context.geometry[3]/SCREEN_HEIGHT))

        self.position = [x,y]

    def setScale(self, width, height, stretched = 0):
        """
        @param stretched:    Bitmask stretching the image according to the following values
                                 0) does not stretch the image
                                 1) fits it to the width of the viewport
                                 2) fits it to the height of the viewport
                                 3) stretches it so it fits the viewport
                                 4) preserves the aspect ratio while stretching
        """
        if stretched & FULL_SCREEN: # FULL_SCREEN is FIT_WIDTH | FIT_HEIGHT
            xStretch = 1
            yStretch = 1
            if stretched & FIT_WIDTH:
                xStretch = float(self.context.geometry[2]) / self.pixelSize[0]
            if stretched & FIT_HEIGHT:
                yStretch = float(self.context.geometry[3]) / self.pixelSize[1]
            if stretched & KEEP_ASPECT:
                if stretched & FULL_SCREEN == FULL_SCREEN: #Note that on FULL_SCREEN | KEEP_ASPECT we will scale to the larger and clip.
                    if xStretch > yStretch:
                       yStretch = xStretch
                    else:
                       xStretch = yStretch
                else:
                    if stretched & FIT_WIDTH:
                        yStretch = xStretch
                    else:
                        xStretch = yStretch
            width *= xStretch
            height *= yStretch

        self.scale = [width, height]

    def setAngle(self, angle):
        self.angle = angle

    def setRect(self, rect):
        """
        @param rect:         The surface rectangle, this is used for cropping the texture
        """
        if not rect == self.rect:
            self.rect = rect
            self.createTex()

    def setAlignment(self, alignment):
        """
        @param alignment:    Adjusts the texture so the coordinate for x-axis placement can either be
                             on the left side (0), center point (1), or right(2) side of the image
        """
        if alignment == CENTER:#center
            self.shift = -.5
        elif alignment == LEFT:  #left
            self.shift = 0
        elif alignment == RIGHT:#right
            self.shift = -1.0

    def setVAlignment(self, alignment):
        """
        @param valignment:   Adjusts the texture so the coordinate for y-axis placement can either be
                             on the bottom side (0), center point (1), or top(2) side of the image
        """
        if alignment == CENTER:#center
            self.vshift = -.5
        if alignment == TOP:#bottom
            self.vshift = 0
        elif alignment == BOTTOM:#top
            self.vshift = -1.0

    def setColor(self, color):
        if len(color) == 3:
            color = (color[0], color[1], color[2], 1.0)
        self.color = color

    def draw(self):
        with cmgl.PushedSpecificMatrix(GL_TEXTURE):
            with cmgl.PushedSpecificMatrix(GL_PROJECTION):

                with cmgl.MatrixMode(GL_PROJECTION):
                    self.context.setProjection()

                with cmgl.PushedMatrix():
                    glLoadIdentity()

                    glTranslate(self.position[0], self.position[1], 0.0)
                    glRotatef(-self.angle, 0, 0, 1)
                    glScalef(self.scale[0], self.scale[1], 1.0)
                    glScalef(self.pixelSize[0], self.pixelSize[1], 1)
                    glTranslatef(self.shift, self.vshift, 0)

                    glColor4f(*self.color)

                    glEnable(GL_TEXTURE_2D)
                    self.texture.bind()
                    cmgl.drawArrays(GL_QUADS, vertices=ImgDrawing.VTX_ARRAY, texcoords=self.texArray)
                    glDisable(GL_TEXTURE_2D)
开发者ID:Richardgriff,项目名称:fofix,代码行数:104,代码来源:Svg.py

示例3: ImgDrawing

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........

    # Make sure we have a valid texture
    if not self.texture:
      if type(ImgData) == str:
        e = "Unable to load texture for %s." % ImgData
      else:
        e = "Unable to load texture for SVG file."
      Log.error(e)
      raise RuntimeError(e)

  def convertToTexture(self, width, height):
    if self.texture:
      return

    e = "SVG drawing does not have a valid texture image."
    Log.error(e)
    raise RuntimeError(e)

  def _getEffectiveTransform(self):
    transform = SvgTransform(self.transform)
    transform.transform(self.context.transform)
    return transform

  def width1(self):
    width = self.texture.pixelSize[0]
    if not width == None:
      return width
    else:
      return 0

  #myfingershurt:
  def height1(self):
    height = self.texture.pixelSize[1]
    if not height == None:
      return height
    else:
      return 0


  def widthf(self, pixelw):
    width = self.texture.pixelSize[0]
    wfactor = pixelw/width
    if not width == None:
      return wfactor
    else:
      return 0    

  def draw(self, color = (1, 1, 1, 1), rect = (0,1,0,1), lOffset = 0.0, rOffset = 0.0):
    glMatrixMode(GL_TEXTURE)
    glPushMatrix()
    glMatrixMode(GL_PROJECTION)
    glPushMatrix()
    self.context.setProjection()
    glMatrixMode(GL_MODELVIEW)
    glPushMatrix()

    glLoadIdentity()
    self._getEffectiveTransform().applyGL()

    glScalef(self.texture.pixelSize[0], self.texture.pixelSize[1], 1)
    glTranslatef(-.5, -.5, 0)
    glColor4f(*color)


    glEnable(GL_TEXTURE_2D)
    self.texture.bind()
    
    self.triangVtx[0,0] = 0.0-lOffset
    self.triangVtx[0,1] = 1.0
    self.triangVtx[1,0] = 1.0-rOffset
    self.triangVtx[1,1] = 1.0
    self.triangVtx[2,0] = 0.0+lOffset
    self.triangVtx[2,1] = 0.0
    self.triangVtx[3,0] = 1.0+rOffset
    self.triangVtx[3,1] = 0.0
    
    self.textriangVtx[0,0] = rect[0]
    self.textriangVtx[0,1] = rect[3]
    self.textriangVtx[1,0] = rect[1]
    self.textriangVtx[1,1] = rect[3]
    self.textriangVtx[2,0] = rect[0]
    self.textriangVtx[2,1] = rect[2]
    self.textriangVtx[3,0] = rect[1]
    self.textriangVtx[3,1] = rect[2]
    
    glEnableClientState(GL_TEXTURE_COORD_ARRAY)    
    glEnableClientState(GL_VERTEX_ARRAY)
    glVertexPointerf(self.triangVtx)
    glTexCoordPointerf(self.textriangVtx)
    glDrawArrays(GL_TRIANGLE_STRIP, 0, self.triangVtx.shape[0])
    glDisableClientState(GL_VERTEX_ARRAY)
    glDisableClientState(GL_TEXTURE_COORD_ARRAY)
    
    glDisable(GL_TEXTURE_2D)
    glPopMatrix()
    glMatrixMode(GL_TEXTURE)
    glPopMatrix()
    glMatrixMode(GL_PROJECTION)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)
开发者ID:Gamer125,项目名称:fofix,代码行数:104,代码来源:Svg.py

示例4: ImgDrawing

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........
  def createVtx(self):
    vA = self.vtxArray #short hand variable casting
    
    #topLeft, topRight, bottomRight, bottomLeft
    vA[0,0] = 0.0; vA[0,1] = 1.0
    vA[1,0] = 1.0; vA[1,1] = 1.0
    vA[2,0] = 1.0; vA[2,1] = 0.0
    vA[3,0] = 0.0; vA[3,1] = 0.0
    
  def createTex(self):
    tA = self.texArray
    rect = self.rect

    #topLeft, topRight, bottomRight, bottomLeft
    tA[0,0] = rect[0]; tA[0,1] = rect[3]
    tA[1,0] = rect[1]; tA[1,1] = rect[3]
    tA[2,0] = rect[1]; tA[2,1] = rect[2]
    tA[3,0] = rect[0]; tA[3,1] = rect[2]
    
  def width1(self):
    width = self.pixelSize[0]
    if width:
      return width
    else:
      return 0

  #myfingershurt:
  def height1(self):
    height = self.pixelSize[1]
    if height:
      return height
    else:
      return 0

  def widthf(self, pixelw):
    width = self.pixelSize[0]
    if width:
      wfactor = pixelw/width
      return wfactor
    else:
      return 0    

  def setPosition(self, x, y):
    self.position = [x,y]

  def setScale(self, width, height):
    self.scale = [width, height]

  def setAngle(self, angle):
    self.angle = angle

  def setRect(self, rect):
    if not rect == self.rect: 
      self.rect = rect
      self.createTex()

  def setAlignment(self, alignment):
    if alignment == LEFT:  #left
      self.shift = 0
    elif alignment == CENTER:#center
      self.shift = -.5
    elif alignment == RIGHT:#right
      self.shift = -1.0

  def setVAlignment(self, alignment):
    if alignment == 0:  #bottom
      self.vshift = 0
    elif alignment == 1:#center
      self.vshift = -.5
    elif alignment == 2:#top
      self.vshift = -1.0

  def setColor(self, color):
    if len(color) == 3:
      color = (color[0], color[1], color[2], 1.0)
    self.color = color

  def draw(self):
    with cmgl.PushedSpecificMatrix(GL_TEXTURE):
      with cmgl.PushedSpecificMatrix(GL_PROJECTION):

        with cmgl.MatrixMode(GL_PROJECTION):
          self.context.setProjection()

        with cmgl.PushedMatrix():
          glLoadIdentity()

          glTranslate(self.position[0], self.position[1], 0.0)
          glScalef(self.scale[0], self.scale[1], 1.0)
          glRotatef(self.angle, 0, 0, 1)
          
          glScalef(self.pixelSize[0], self.pixelSize[1], 1)
          glTranslatef(self.shift, self.vshift, 0)

          glColor4f(*self.color)

          glEnable(GL_TEXTURE_2D)
          self.texture.bind()
          cmgl.drawArrays(GL_QUADS, vertices=self.vtxArray, texcoords=self.texArray)
          glDisable(GL_TEXTURE_2D)
开发者ID:davwong,项目名称:fofix,代码行数:104,代码来源:Svg.py

示例5: __init__

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........
      Log.error(e)
      raise RuntimeError(e)

  def _cacheDrawing(self, drawBoard):
    self.cache.beginCaching()
    parser = sax.make_parser()
    sax.parseString(self.svgData, SvgHandler(drawBoard, self.cache))
    self.cache.endCaching()
    del self.svgData

  def convertToTexture(self, width, height):
    if self.texture:
      return

    e = "SVG drawing does not have a valid texture image."
    Log.error(e)
    raise RuntimeError(e)

    #try:
    #  self.texture = Texture()
    #  self.texture.bind()
    #  self.texture.prepareRenderTarget(width, height)
    #  self.texture.setAsRenderTarget()
    #  quality = self.context.getRenderingQuality()
    #  self.context.setRenderingQuality(HIGH_QUALITY)
    #  geometry = self.context.geometry
    #  self.context.setProjection((0, 0, width, height))
    #  glViewport(0, 0, width, height)
    #  self.context.clear()
    #  transform = SvgTransform()
    #  transform.translate(width / 2, height / 2)
    #  self._render(transform)
    #  self.texture.resetDefaultRenderTarget()
    #  self.context.setProjection(geometry)
    #  glViewport(*geometry)
    #  self.context.setRenderingQuality(quality)
    #except TextureException, e:
    #  Log.warn("Unable to convert SVG drawing to texture: %s" % str(e))

  def _getEffectiveTransform(self):
    transform = SvgTransform(self.transform)
    transform.transform(self.context.transform)
    return transform

  def _render(self, transform):
    glMatrixMode(GL_TEXTURE)
    glPushMatrix()
    glMatrixMode(GL_MODELVIEW)
    
    glPushAttrib(GL_ENABLE_BIT | GL_TEXTURE_BIT | GL_STENCIL_BUFFER_BIT | GL_TRANSFORM_BIT | GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT | GL_CURRENT_BIT | GL_DEPTH_BUFFER_BIT)
    if not self.cache:
      self.cache = SvgCache(self.context.drawBoard)
      self._cacheDrawing(self.context.drawBoard)
    self.cache.draw(transform)
    glPopAttrib()

    glMatrixMode(GL_TEXTURE)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)

  def draw(self, color = (1, 1, 1, 1)):
    glMatrixMode(GL_TEXTURE)
    glPushMatrix()
    glMatrixMode(GL_PROJECTION)
    glPushMatrix()
    self.context.setProjection()
    glMatrixMode(GL_MODELVIEW)
    glPushMatrix()

    transform = self._getEffectiveTransform()
    if self.texture:
      glLoadIdentity()
      transform.applyGL()

      glScalef(self.texture.pixelSize[0], self.texture.pixelSize[1], 1)
      glTranslatef(-.5, -.5, 0)
      glColor4f(*color)
      
      self.texture.bind()
      glEnable(GL_TEXTURE_2D)
      glBegin(GL_TRIANGLE_STRIP)
      glTexCoord2f(0.0, 1.0)
      glVertex2f(0.0, 1.0)
      glTexCoord2f(1.0, 1.0)
      glVertex2f(1.0, 1.0)
      glTexCoord2f(0.0, 0.0)
      glVertex2f(0.0, 0.0)
      glTexCoord2f(1.0, 0.0)
      glVertex2f(1.0, 0.0)
      glEnd()
      glDisable(GL_TEXTURE_2D)
    else:
      self._render(transform)
    glMatrixMode(GL_TEXTURE)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)
    glPopMatrix()
    glMatrixMode(GL_PROJECTION)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)
开发者ID:fretsonfire,项目名称:fof-python,代码行数:104,代码来源:Svg.py

示例6: __init__

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........
    Log.error(e)
    raise RuntimeError(e)

  def _getEffectiveTransform(self):
    transform = SvgTransform(self.transform)
    transform.transform(self.context.transform)
    return transform

  def width1(self):
    width = self.texture.pixelSize[0]
    if not width == None:
      return width
    else:
      return 0

  #myfingershurt:
  def height1(self):
    height = self.texture.pixelSize[1]
    if not height == None:
      return height
    else:
      return 0


  def widthf(self, pixelw):
    width = self.texture.pixelSize[0]
    wfactor = pixelw/width
    if not width == None:
      return wfactor
    else:
      return 0    

  def _render(self, transform):
    glMatrixMode(GL_TEXTURE)
    glPushMatrix()
    glMatrixMode(GL_MODELVIEW)
    
    glPushAttrib(GL_ENABLE_BIT | GL_TEXTURE_BIT | GL_STENCIL_BUFFER_BIT | GL_TRANSFORM_BIT | GL_COLOR_BUFFER_BIT | GL_POLYGON_BIT | GL_CURRENT_BIT | GL_DEPTH_BUFFER_BIT)
    if not self.cache:
      self.cache = SvgCache(self.context.drawBoard)
      self._cacheDrawing(self.context.drawBoard)
    self.cache.draw(transform)
    glPopAttrib()

    glMatrixMode(GL_TEXTURE)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)

  def draw(self, color = (1, 1, 1, 1), rect = (0,1,0,1), lOffset = 0.0, rOffset = 0.0):
    glMatrixMode(GL_TEXTURE)
    glPushMatrix()
    glMatrixMode(GL_PROJECTION)
    glPushMatrix()
    self.context.setProjection()
    glMatrixMode(GL_MODELVIEW)
    glPushMatrix()

    transform = self._getEffectiveTransform()
    if self.texture:
      glLoadIdentity()
      transform.applyGL()

      glScalef(self.texture.pixelSize[0], self.texture.pixelSize[1], 1)
      glTranslatef(-.5, -.5, 0)
      glColor4f(*color)
      

      glEnable(GL_TEXTURE_2D)
      self.texture.bind()
      
      triangVtx = array(
        [[0.0-lOffset, 1.0],
         [1.0-rOffset, 1.0],
         [0.0+lOffset, 0.0],
         [1.0+rOffset, 0.0]], dtype=float32)

      textriangVtx = array(
        [[rect[0], rect[3]],
         [rect[1], rect[3]],
         [rect[0], rect[2]],
         [rect[1], rect[2]]], dtype=float32)

      glEnableClientState(GL_TEXTURE_COORD_ARRAY)    
      glEnableClientState(GL_VERTEX_ARRAY)
      glTexCoordPointerf(textriangVtx)
      glVertexPointerf(triangVtx)
      glDrawArrays(GL_TRIANGLE_STRIP, 0, triangVtx.shape[0])
      glDisableClientState(GL_VERTEX_ARRAY)
      glDisableClientState(GL_TEXTURE_COORD_ARRAY)

      glDisable(GL_TEXTURE_2D)
    else:
      self._render(transform)
    glMatrixMode(GL_TEXTURE)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)
    glPopMatrix()
    glMatrixMode(GL_PROJECTION)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)
开发者ID:Gamer125,项目名称:fofix,代码行数:104,代码来源:Svg.py

示例7: render

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]
  def render(self, text, pos = (0, 0), direction = (1, 0), scale = DEFAULT_SCALE, shadowoffset = (.0022, .0005)):
    """
    Draw some text.

    @param text:      Text to draw
    @param pos:       Text coordinate tuple (x, y)
    @param direction: Text direction vector (x, y, z)
    @param scale:     Scale factor
    """
    # deufeufeu : new drawing relaying only on pygame.font.render
    #           : I know me miss special unicodes characters, but the gain
    #           : is really important.
    # evilynux : Use arrays to increase performance
    def drawSquare(w,h,tw,th):
        self.square_prim[1,0] = self.square_prim[3,0] = w
        self.square_prim[2,1] = self.square_prim[3,1] = h
        self.square_tex[0,1] = self.square_tex[1,1] = th
        self.square_tex[1,0] = self.square_tex[3,0] = tw
        glEnableClientState(GL_VERTEX_ARRAY)
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
        glVertexPointerf(self.square_prim)
        glTexCoordPointerf(self.square_tex)
        glDrawArrays(GL_TRIANGLE_STRIP, 0, self.square_prim.shape[0])
        glDisableClientState(GL_VERTEX_ARRAY)
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
 
    if not text:
        return

    try:
        t,w,h = self.stringsCache.get(text)
    except KeyError:
        s = self.font.render(text, True, (255,255,255))
        t = Texture()
        t.setFilter(GL_LINEAR, GL_LINEAR)
        t.setRepeat(GL_CLAMP, GL_CLAMP)
        t.loadSurface(s, alphaChannel = True)
        del s
        w, h = self.font.size(text)
        self.stringsCache.add(text,(t,w,h))
     
    x, y = pos
    scale *= self.scale
    w, h = w*scale, h*scale
    tw,th = t.size
    glEnable(GL_TEXTURE_2D)
    glPushMatrix()
    glTranslatef(x,y,0)
    t.bind()
    if self.outline:
        glPushAttrib(GL_CURRENT_BIT)
        glPushMatrix()
        glColor4f(0, 0, 0, .25 * glGetDoublev(GL_CURRENT_COLOR)[3])

        blur = 2 * DEFAULT_SCALE
        for offset in [(-.7, -.7), (0, -1), (.7, -.7), (-1, 0), 
                       (1, 0), (-.7, .7), (0, 1), (.7, .7)]:
            glPushMatrix()
            glTranslatef(blur * offset[0], blur * offset[1], 0)
            drawSquare(w,h,tw,th)
            glPopMatrix()
        glPopMatrix()
        glPopAttrib()

    if self.shadow:
        glPushAttrib(GL_CURRENT_BIT)
        glPushMatrix()
        glColor4f(0, 0, 0, 1)
        glTranslatef(shadowoffset[0], shadowoffset[1], 0)
        drawSquare(w,h,tw,th)
        glPopMatrix()
        glPopAttrib()

    drawSquare(w,h,tw,th)
    glPopMatrix()

    glDisable(GL_TEXTURE_2D)
    return
开发者ID:Gamer125,项目名称:fofix,代码行数:80,代码来源:Font.py

示例8: ImgDrawing

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........
    tA[0,0] = rect[0]; tA[0,1] = rect[3]
    tA[1,0] = rect[1]; tA[1,1] = rect[3]
    tA[2,0] = rect[1]; tA[2,1] = rect[2]
    tA[3,0] = rect[0]; tA[3,1] = rect[2]

  def convertToTexture(self, width, height):
    if self.texture:
      return

    e = "SVG drawing does not have a valid texture image."
    Log.error(e)
    raise RuntimeError(e)

  def width1(self):
    width = self.pixelSize[0]
    if width:
      return width
    else:
      return 0

  #myfingershurt:
  def height1(self):
    height = self.pixelSize[1]
    if height:
      return height
    else:
      return 0

  def widthf(self, pixelw):
    width = self.pixelSize[0]
    if width:
      wfactor = pixelw/width
      return wfactor
    else:
      return 0    

  def setPosition(self, x, y):
    self.position = [x,y]

  def setScale(self, width, height):
    self.scale = [width, height]

  def setAngle(self, angle):
    self.angle = angle

  def setRect(self, rect):
    if not rect == self.rect: 
      self.rect = rect
      self.createTex()

  def setAlignment(self, alignment):
    if alignment == 0:  #left
      self.shift = 0
    elif alignment == 1:#center
      self.shift = -.5
    elif alignment == 2:#right
      self.shift = -1.0

  def setColor(self, color):
    if len(color) == 3:
      color = (color[0], color[1], color[2], 1.0)
    self.color = color

  def draw(self):
    glMatrixMode(GL_TEXTURE)
    glPushMatrix()
    glMatrixMode(GL_PROJECTION)
    glPushMatrix()
    self.context.setProjection()
    glMatrixMode(GL_MODELVIEW)
    glPushMatrix()

    glLoadIdentity()

    glTranslate(self.position[0], self.position[1], 0.0)
    glScalef(self.scale[0], self.scale[1], 1.0)
    glRotatef(self.angle, 0, 0, 1)
    
    glScalef(self.pixelSize[0], self.pixelSize[1], 1)
    glTranslatef(self.shift, -.5, 0)
    glColor4f(*self.color)

    glEnable(GL_TEXTURE_2D)
    self.texture.bind()
    
    glEnableClientState(GL_TEXTURE_COORD_ARRAY)    
    glEnableClientState(GL_VERTEX_ARRAY)
    glVertexPointerf(self.vtxArray)
    glTexCoordPointerf(self.texArray)
    glDrawArrays(GL_QUADS, 0, self.vtxArray.shape[0])
    glDisableClientState(GL_VERTEX_ARRAY)
    glDisableClientState(GL_TEXTURE_COORD_ARRAY)
    
    glDisable(GL_TEXTURE_2D)
    glPopMatrix()
    glMatrixMode(GL_TEXTURE)
    glPopMatrix()
    glMatrixMode(GL_PROJECTION)
    glPopMatrix()
    glMatrixMode(GL_MODELVIEW)
开发者ID:cherbib,项目名称:fofix,代码行数:104,代码来源:Svg.py

示例9: FontObj

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]

#.........这里部分代码省略.........
        # the text is now different

        self.rect = (0.0, 0.0, 1.0, 1.0)
        self.createArrays()

    def setAlignment(self, alignment):
        alignment = alignment.upper()
        if alignment == "LEFT":
            self.alignment = LEFT
        elif alignment == "RIGHT":
            self.alignment = RIGHT
        else:
            self.alignment = CENTER

    # changes the position of the image to x, y
    def setPosition(self, x, y):
        self.position = (x, y)

    # moves the image from its current position by x and y
    def slide(self, x=0, y=0):
        self.position = (self.position[0] + x, self.position[1] + y)

    # changes the size of the image and scales the surface
    def setScale(self, width, height):
        if self.scale[0] != width and self.scale[1] != height:
            if (width >= 0 and width <= 1) and (height >= 0 and height <= 1):
                self.scale = (width, height)
            else:
                self.scale = (float(width) / float(self.pixelSize[0]), float(height) / float(self.pixelSize[1]))
            self.getDimensions()

    def scaleWidth(self, width, keep_aspect_ratio=True):
        height = self.scale[1]
        if keep_aspect_ratio:
            height = self.scale[1] * (width / self.pixelSize[0])
        self.scale = (width / self.pixelSize[0], height)
        self.getDimensions()

    def scaleHeight(self, height, keep_aspect_ratio=True):
        width = self.scale[0]
        if keep_aspect_ratio:
            width = self.scale[0] * (height / self.pixelSize[1])
        self.setScale(width, height / self.pixelSize[1])
        self.getDimensions()

    # rotates the image to the angle
    def setAngle(self, angle):
        self.angle = angle

    # rotates the image
    def rotate(self, angle):
        self.angle += angle

    # sets the colour of the image (RGBA 0.0 -> 1.0)
    def setColor(self, color):
        self.color = list(self.color)
        for i in range(len(color)):
            self.color[i] = color[i]

    # fades from the current color to the new color in the set amount of time
    # remember that the color must be in RGBA format
    def fade(self, color, milliseconds):
        color = [float(c) for c in color]  # makes sure the color is an array of floats
        if list(self.color) != color:
            self.color = [self.color[i] + (color[i] - self.color[i]) / milliseconds for i in range(len(self.color))]
            return True
        return False

    # finally draws the image to the screen
    def draw(self):
        def render(position=self.position, scale=self.scale, angle=self.angle, color=self.color):

            glPushMatrix()

            x = position[0]
            if self.alignment == 0:
                x += float(self.pixelSize[0]) / 2.0
            elif self.alignment == 2:
                x -= float(self.pixelSize[0]) / 2.0

            glTranslatef(x, position[1], -0.1)
            glScalef(scale[0], -scale[1], 1.0)
            glRotatef(angle, 0, 0, 1)
            glColor4f(*color)

            self.texture.bind()

            glEnableClientState(GL_TEXTURE_COORD_ARRAY)
            glEnableClientState(GL_VERTEX_ARRAY)
            glVertexPointerf(self.vtxArray)
            glTexCoordPointerf(self.texArray)
            glDrawArrays(GL_QUADS, 0, self.vtxArray.shape[0])
            glDisableClientState(GL_VERTEX_ARRAY)
            glDisableClientState(GL_TEXTURE_COORD_ARRAY)

            glPopMatrix()

        if self.shadow:
            render(position=(self.position[0] + 1, self.position[1] - 2), color=(0, 0, 0, self.color[3]))
        render()
开发者ID:nhydock,项目名称:UlDunAd,代码行数:104,代码来源:FontObj.py

示例10: render

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]
  def render(self, text, pos = (0, 0), rotate = 0, scale = DEFAULT_SCALE, shadowoffset = (.0022, .0005), align = LEFT, new = False):
    """
    Draw some text.

    @param text:      Text to draw
    @param pos:       Text coordinate tuple (x, y)
    @param rotate:    Angle to rotate text, in degrees
    @param scale:     Scale factor
    """
    # deufeufeu : new drawing relaying only on pygame.font.render
    #           : I know me miss special unicodes characters, but the gain
    #           : is really important.
    # evilynux : Use arrays to increase performance
    def drawSquare(w,h,tw,th):
        self.square_prim[1,0] = self.square_prim[3,0] = w
        self.square_prim[2,1] = self.square_prim[3,1] = h
        self.square_tex[0,1] = self.square_tex[1,1] = th
        self.square_tex[1,0] = self.square_tex[3,0] = tw
        cmglDrawArrays(GL_TRIANGLE_STRIP, vertices=self.square_prim, texcoords=self.square_tex)

    if not text:
        return

    try:
        t,w,h = self.stringsCache.get(text)
    except KeyError:
        s = self.font.render(text, True, (255,255,255))
        t = Texture()
        t.setFilter(GL_LINEAR, GL_LINEAR)
        t.setRepeat(GL_CLAMP, GL_CLAMP)
        t.loadSurface(s, alphaChannel = True)
        del s
        w, h = self.font.size(text)
        self.stringsCache.add(text,(t,w,h))

    x, y = pos
    scale *= self.scale
    w, h = w*scale*self.aspectRatioFactor, h*scale
    if align == CENTER: #we have already done all the calculating. Why not add this? - akedrou
      x -= (w/2)
    elif align == RIGHT:
      x -= w
    y -= (h/2)
    tw,th = t.size
    glEnable(GL_TEXTURE_2D)
    with cmglPushedMatrix():
      if rotate:
        if not isinstance(rotate, tuple):
          glRotatef(rotate, 0, 0, 1.0)
        else:
          glRotatef(0, *rotate)
      glTranslatef(x,y,0)
      t.bind()
      if self.outline:
        with cmglPushedAttrib(GL_CURRENT_BIT):
          glColor4f(0, 0, 0, .25 * glGetDoublev(GL_CURRENT_COLOR)[3])

          blur = 2 * DEFAULT_SCALE
          for offset in [(-.7, -.7), (0, -1), (.7, -.7), (-1, 0),
                         (1, 0), (-.7, .7), (0, 1), (.7, .7)]:
            with cmglPushedMatrix():
              glTranslatef(blur * offset[0], blur * offset[1], 0)
              drawSquare(w,h,tw,th)

      if self.shadow:
        with cmglPushedAttrib(GL_CURRENT_BIT):
          glColor4f(0, 0, 0, 1)
          with cmglPushedMatrix():
            glTranslatef(shadowoffset[0], shadowoffset[1], 0)
            drawSquare(w,h,tw,th)

      drawSquare(w,h,tw,th)

    glDisable(GL_TEXTURE_2D)
开发者ID:upgradeadvice,项目名称:fofix-grisly-virtualenv,代码行数:76,代码来源:Font.py

示例11: render

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]
  def render(self, text, pos = (0, 0), direction = (1, 0), scale = DEFAULT_SCALE):
    """
    Draw some text.

    @param text:      Text to draw
    @param pos:       Text coordinate tuple (x, y)
    @param direction: Text direction vector (x, y, z)
    @param scale:     Scale factor
    """
    # deufeufeu : new drawing relaying only on pygame.font.render
    #           : I know me miss special unicodes characters, but the gain
    #           : is really important.
    def drawSquare(w,h,tw,th):
        glBegin(GL_TRIANGLE_STRIP)
        glTexCoord2f(0.0,th)
        glVertex2f(0,0)
        glTexCoord2f(tw,th)
        glVertex2f(w,0)
        glTexCoord2f(0.0,0.0)
        glVertex2f(0,h)
        glTexCoord2f(tw,0.0)
        glVertex2f(w,h)
        glEnd()
 
    if not text:
        return

    try:
        t,w,h = self.stringsCache.get(text)
    except KeyError:
        s = self.font.render(text, True, (255,255,255))
        t = Texture()
        t.setFilter(GL_LINEAR, GL_LINEAR)
        t.setRepeat(GL_CLAMP, GL_CLAMP)
        t.loadSurface(s, alphaChannel = True)
        del s
        w, h = self.font.size(text)
        self.stringsCache.add(text,(t,w,h))
     
    x, y = pos
    scale *= self.scale
    w, h = w*scale, h*scale
    tw,th = t.size
    glEnable(GL_TEXTURE_2D)
    glPushMatrix()
    glTranslatef(x,y,0)
    t.bind()
    if self.outline:
        glPushAttrib(GL_CURRENT_BIT)
        glPushMatrix()
        glColor4f(0, 0, 0, .25 * glGetDoublev(GL_CURRENT_COLOR)[3])

        blur = 2 * DEFAULT_SCALE
        for offset in [(-.7, -.7), (0, -1), (.7, -.7), (-1, 0), 
                       (1, 0), (-.7, .7), (0, 1), (.7, .7)]:
            glPushMatrix()
            glTranslatef(blur * offset[0], blur * offset[1], 0)
            drawSquare(w,h,tw,th)
            glPopMatrix()
        glPopMatrix()
        glPopAttrib()

    if self.shadow:
        glPushAttrib(GL_CURRENT_BIT)
        glPushMatrix()
        glColor4f(0, 0, 0, 1)
        glTranslatef(.0022, .0005, 0)
        drawSquare(w,h,tw,th)
        glPopMatrix()
        glPopAttrib()

    drawSquare(w,h,tw,th)
    glPopMatrix()

    glDisable(GL_TEXTURE_2D)
    return
开发者ID:Gamer125,项目名称:fofix,代码行数:78,代码来源:Font.py

示例12: __init__

# 需要导入模块: from Texture import Texture [as 别名]
# 或者: from Texture.Texture import bind [as 别名]
class ImgDrawing:
    def __init__(self, context, imgPath):
        self.imgPath = None
        self.texture = None
        self.context = context
        self.cache = None
        self.transform = ImgTransform()

        # Load PNG files directly
        if imgPath.endswith(".png"):
            self.texture = Texture(imgPath)
        else:
            e = "Unsupported Image format."
            Log.error(e)
            raise RuntimeError(e)

        # Make sure we have a valid texture
        if not self.texture:
            e = "Unable to load texture for %s." % imgPath
            Log.error(e)
            raise RuntimeError(e)

    def convertToTexture(self, width, height):
        if self.texture:
            return

        e = "Img drawing does not have a valid texture image."
        Log.error(e)
        raise RuntimeError(e)

    def _getEffectiveTransform(self):
        transform = ImgTransform(self.transform)
        transform.transform(self.context.transform)
        return transform

    def draw(self, color = (1, 1, 1, 1)):
        glMatrixMode(GL_TEXTURE)
        glPushMatrix()
        glMatrixMode(GL_PROJECTION)
        glPushMatrix()
        self.context.setProjection()
        glMatrixMode(GL_MODELVIEW)
        glPushMatrix()

        transform = self._getEffectiveTransform()
        if self.texture:
            glLoadIdentity()
            transform.applyGL()

            glScalef(self.texture.pixelSize[0], self.texture.pixelSize[1], 1)
            glTranslatef(-.5, -.5, 0)
            glColor4f(*color)

            self.texture.bind()
            glEnable(GL_TEXTURE_2D)
            glBegin(GL_TRIANGLE_STRIP)
            glTexCoord2f(0.0, 1.0)
            glVertex2f(0.0, 1.0)
            glTexCoord2f(1.0, 1.0)
            glVertex2f(1.0, 1.0)
            glTexCoord2f(0.0, 0.0)
            glVertex2f(0.0, 0.0)
            glTexCoord2f(1.0, 0.0)
            glVertex2f(1.0, 0.0)
            glEnd()
            glDisable(GL_TEXTURE_2D)
        glMatrixMode(GL_TEXTURE)
        glPopMatrix()
        glMatrixMode(GL_MODELVIEW)
        glPopMatrix()
        glMatrixMode(GL_PROJECTION)
        glPopMatrix()
        glMatrixMode(GL_MODELVIEW)
开发者ID:Hawkheart,项目名称:fof-reborn,代码行数:75,代码来源:Img.py


注:本文中的Texture.Texture.bind方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。