view pytouhou/ui/opengl/renderer.pxd @ 518:75ae628522c9

Use shorts instead of ints for vertex position, reducing the size of a vertex to 20 bytes from 24.
author Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
date Sat, 07 Dec 2013 14:15:43 +0100
parents b3193b43a86c
children c0b3f8709f74
line wrap: on
line source

from cpython cimport PyObject
from pytouhou.lib.opengl cimport GLuint
from .texture cimport TextureManager, FontManager

cdef struct Vertex:
    short x, y, z, padding
    float u, v
    unsigned char r, g, b, a


cdef struct PassthroughVertex:
    short x, y
    float u, v


cdef class Texture:
    cdef long key
    cdef GLuint texture, *pointer
    cdef unsigned short indices[2][65536]


cdef class Renderer:
    cdef TextureManager texture_manager
    cdef FontManager font_manager
    cdef GLuint vbo, framebuffer_vbo
    cdef Vertex vertex_buffer[MAX_ELEMENTS]
    cdef long x, y, width, height

    cdef bint use_fixed_pipeline #XXX

    cdef GLuint textures[MAX_TEXTURES]
    cdef unsigned short *indices[MAX_TEXTURES][2]
    cdef unsigned short last_indices[2 * MAX_TEXTURES]
    cdef PyObject *elements[640*3]

    cdef void render_elements(self, elements) except *
    cdef void render_quads(self, rects, colors, GLuint texture) except *
    cdef void render_framebuffer(self, Framebuffer fb) except *


cdef class Framebuffer:
    cdef GLuint fbo, texture, rbo
    cdef int x, y, width, height

    cpdef bind(self)