58 lines
1.5 KiB
C++
58 lines
1.5 KiB
C++
// Copyright (c) 2022 Dominic Masters
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
|
|
#pragma once
|
|
#include "display/Color.hpp"
|
|
|
|
namespace Dawn {
|
|
class ITexture {
|
|
public:
|
|
/**
|
|
* Returns the width of the texture.
|
|
*
|
|
* @return Width of the texture.
|
|
*/
|
|
virtual int32_t getWidth() = 0;
|
|
|
|
/**
|
|
* Returns the height of the texture.
|
|
*
|
|
* @return Height of the texture.
|
|
*/
|
|
virtual int32_t getHeight() = 0;
|
|
|
|
/**
|
|
* Initializes a texture.
|
|
*
|
|
* @param width Width of the texture (in pixels).
|
|
* @param height Height of the texture (in pixels).
|
|
*/
|
|
virtual void setSize(int32_t width, int32_t height) = 0;
|
|
|
|
/**
|
|
* Fill a texture with a single color. This is stupidly costly.
|
|
*
|
|
* @param color Color to fill.
|
|
*/
|
|
virtual void fill(struct Color) = 0;
|
|
|
|
/**
|
|
* Returns true only when the texture has been loaded, sized and put on
|
|
* the gpu for rendering.
|
|
*
|
|
* @return True if ready, otherwise false.
|
|
*/
|
|
virtual bool_t isReady() = 0;
|
|
|
|
/**
|
|
* Buffer pixel data onto the GPU. Pixel buffering is rather costly so
|
|
* avoid doing this too often.
|
|
*
|
|
* @param pixels Array of pixels you're trying to buffer.
|
|
* @return The amount of bytes buffered to the texture.
|
|
*/
|
|
virtual void buffer(struct Color pixels[]) = 0;
|
|
};
|
|
} |