Beispiel #1
0
    def __init__(self):
        '''
        Constructor
        '''
        self.labels = []
        self.label_maker = LabelMaker(True)
        self.texture = None
        self.vertex_buffer = VertexBuffer(4, False)
        self.index_buffer = IndexBuffer(6)
        #private Paint mLabelPaint = new Paint();
        #mLabelPaint.setAntiAlias(true);

        self.vertex_buffer.add_point(0, 0, 0)  # Bottom left
        self.vertex_buffer.add_point(0, 1, 0)  # Top left
        self.vertex_buffer.add_point(1, 0, 0)  # Bottom right
        self.vertex_buffer.add_point(1, 1, 0)  # Top right

        # Triangle one: bottom left, top left, bottom right.
        self.index_buffer.add_index(0)
        self.index_buffer.add_index(1)
        self.index_buffer.add_index(2)

        # Triangle two: bottom right, top left, top right.
        self.index_buffer.add_index(2)
        self.index_buffer.add_index(1)
        self.index_buffer.add_index(3)
Beispiel #2
0
 def __init__(self):
     '''
     constructor
     '''
     self.sources = []
     self.vertex_buffer = VertexBuffer(0, True)
     self.index_buffer = IndexBuffer(0, True)
     self.text_coord_buffer = TextCoordBuffer(0, True)
     self.color_buffer = NightVisionBuffer(0, True)
Beispiel #3
0
 def __init__(self, new_layer, new_texture_manager):
     '''
     Constructor
     '''
     RendererObjectManager.__init__(self, new_layer, new_texture_manager)
     self.vertex_buffer = VertexBuffer(True)
     self.color_buffer = NightVisionBuffer(True)
     self.text_coord_buffer = TextCoordBuffer(True)
     self.index_buffer = IndexBuffer(True)
     self.texture_ref = None
     self.opaque = True
Beispiel #4
0
    def __init__(self, new_layer, new_texture_manager):
        '''
        Constructor
        '''
        RendererObjectManager.__init__(self, new_layer, new_texture_manager)

        self.vertex_buffer = VertexBuffer()
        self.text_coord_buffer = TextCoordBuffer()
        self.images = []
        self.textures = []
        self.red_textures = []

        self.updates = set()
Beispiel #5
0
    def __init__(self, layer_id, texture_manager):
        '''
        Constructor
        '''
        RendererObjectManager.__init__(self, layer_id, texture_manager)

        self.vertex_buffer = VertexBuffer(0, True)
        self.color_buffer = ColorBuffer(0, True)
        self.index_buffer = IndexBuffer(0, True)
        self.sun_pos = GeocentricCoordinates(0, 1, 0)

        num_vertices = self.NUM_VERTEX_BANDS * self.NUM_STEPS_IN_BAND
        num_indices = (self.NUM_VERTEX_BANDS - 1) * self.NUM_STEPS_IN_BAND * 6
        self.vertex_buffer.reset(num_vertices)
        self.color_buffer.reset(num_vertices)
        self.index_buffer.reset(num_indices)

        sin_angles = [0.0] * self.NUM_STEPS_IN_BAND
        cos_angles = [0.0] * self.NUM_STEPS_IN_BAND

        angle_in_band = 0
        d_angle = 2 * math.pi / float(self.NUM_STEPS_IN_BAND - 1)
        for i in range(0, self.NUM_STEPS_IN_BAND):
            sin_angles[i] = math.sin(angle_in_band)
            cos_angles[i] = math.cos(angle_in_band)
            angle_in_band += d_angle

        band_step = 2.0 / float((self.NUM_VERTEX_BANDS - 1) + self.EPSILON)

        vb = self.vertex_buffer
        cb = self.color_buffer
        band_pos = 1
        for band in range(0, self.NUM_VERTEX_BANDS):
            a, r, g, b = 0, 0, 0, 0

            if band_pos > 0:
                intensity = long(band_pos * 20 + 50) & 0xFFFFFFFF
                a = 0xFF
                r = (intensity << 16) & 0x00FF0000
                g = (intensity << 16) & 0x0000FF00
                b = (intensity << 16) & 0x000000FF
            else:
                intensity = long(band_pos * 40 + 40) & 0xFFFFFFFF
                color = (intensity << 16) | (intensity << 8) | (intensity)
                a = 0xFF
                r = color & 0x00FF0000
                g = color & 0x0000FF00
                b = color & 0x000000FF

            band_pos -= band_step

            sin_phi = math.sqrt(1 -
                                band_pos * band_pos) if band_pos > -1 else 0
            for i in range(0, self.NUM_STEPS_IN_BAND):
                vb.add_point(
                    Vector3(cos_angles[i] * sin_phi, band_pos,
                            sin_angles[i] * sin_phi))
                cb.add_color(a, r, g, b)

        ib = self.index_buffer

        # Set the indices for the first band.
        top_band_start = 0
        bottom_band_start = self.NUM_STEPS_IN_BAND
        for triangle_band in range(0, self.NUM_VERTEX_BANDS - 1):
            for offset_from_start in range(0, self.NUM_STEPS_IN_BAND - 1):
                # Draw one quad as two triangles.
                top_left = (top_band_start + offset_from_start)
                top_right = (top_left + 1)

                bottom_left = (bottom_band_start + offset_from_start)
                bottom_right = (bottom_left + 1)

                # First triangle
                ib.add_index(top_left)
                ib.add_index(bottom_right)
                ib.add_index(bottom_left)

                # Second triangle
                ib.add_index(top_right)
                ib.add_index(bottom_right)
                ib.add_index(top_left)

            # Last quad: connect the end with the beginning.

            # Top left, bottom right, bottom left
            ib.add_index((top_band_start + self.NUM_STEPS_IN_BAND - 1))
            ib.add_index(bottom_band_start)
            ib.add_index((bottom_band_start + self.NUM_STEPS_IN_BAND - 1))

            # Top right, bottom right, top left
            ib.add_index(top_band_start)
            ib.add_index(bottom_band_start)
            ib.add_index((top_band_start + self.NUM_STEPS_IN_BAND - 1))

            top_band_start += self.NUM_STEPS_IN_BAND
            bottom_band_start += self.NUM_STEPS_IN_BAND