#ifndef __FISHBOWL_DRAW_H__ #define __FISHBOWL_DRAW_H__ #include namespace fishbone { class Texture; class Mesh; class Renderer; }; // namespace fishbone #include #include #include #include namespace fishbone { class Texture { void init(fishbone::Renderer* renderer, unsigned char* rgba, int width, int height); struct Impl; Impl* impl; public: Texture(fishbone::Renderer* renderer, unsigned char* rgba, int width, int height) { this->init(renderer, rgba, width, height); } Texture(fishbone::Renderer* renderer, fishbone::TextureData* data) { this->init(renderer, data->rgba, data->width, data->height); } ~Texture(); void begin(); void end(); }; class Mesh { void init(fishbone::Renderer* renderer, std::vector vertices, std::vector texcoords, std::vector normals); struct Impl; Impl* impl; public: Mesh(fishbone::Renderer* renderer, std::vector vertices, std::vector texcoords, std::vector normals) { this->init(renderer, vertices, texcoords, normals); } Mesh(fishbone::Renderer* renderer, fishbone::MeshData* data) { this->init(renderer, data->vertices, data->texcoords, data->normals); } ~Mesh(); void draw(); void draw(struct fishbone::Vector3 pos); void draw(struct fishbone::Vector3 pos, struct fishbone::Vector3 rot); fishbone::Texture* texture; }; class Renderer { struct Impl; Impl* impl; public: Renderer(fishbone::Window* window); ~Renderer(); void prepare(); void quad(std::vector vertices, std::vector texcoords, std::vector normals) { std::vector v; std::vector t; std::vector n; v = fishbone::quadToTriangle(vertices); t = fishbone::quadToTriangle(texcoords); n = fishbone::quadToTriangle(normals); this->triangle(v, t, n); } void triangle(std::vector vertices, std::vector texcoords, std::vector normals); void quad(std::vector vertices, std::vector texcoords) { std::vector v; std::vector t; v = fishbone::quadToTriangle(vertices); t = fishbone::quadToTriangle(texcoords); this->triangle(v, t); } void triangle(std::vector vertices, std::vector texcoords); }; static float maxDistance = 64; }; // namespace fishbone #endif