lovr/src/modules/graphics/canvas.h

43 lines
1.4 KiB
C
Raw Normal View History

#include "data/image.h"
#pragma once
2017-12-07 07:50:52 +00:00
2018-08-24 01:28:37 +00:00
#define MAX_CANVAS_ATTACHMENTS 4
struct Image;
2019-04-05 11:58:29 +00:00
struct Texture;
2019-05-18 00:11:22 +00:00
typedef struct Attachment {
2019-04-05 11:58:29 +00:00
struct Texture* texture;
2019-05-20 21:34:03 +00:00
uint32_t slice;
uint32_t level;
} Attachment;
2018-08-24 21:43:39 +00:00
typedef struct {
struct {
bool enabled;
bool readable;
TextureFormat format;
} depth;
2019-05-20 21:34:03 +00:00
uint32_t msaa;
bool stereo;
2018-08-29 20:34:54 +00:00
bool mipmaps;
2018-08-24 21:43:39 +00:00
} CanvasFlags;
2020-02-23 06:19:59 +00:00
typedef struct Canvas Canvas;
Canvas* lovrCanvasCreate(uint32_t width, uint32_t height, CanvasFlags flags);
Canvas* lovrCanvasCreateFromHandle(uint32_t width, uint32_t height, CanvasFlags flags, uint32_t framebuffer, uint32_t depthBuffer, uint32_t resolveBuffer, uint32_t attachmentCount, bool immortal);
2018-02-26 08:59:03 +00:00
void lovrCanvasDestroy(void* ref);
2019-05-20 21:34:03 +00:00
const Attachment* lovrCanvasGetAttachments(Canvas* canvas, uint32_t* count);
void lovrCanvasSetAttachments(Canvas* canvas, Attachment* attachments, uint32_t count);
2018-08-29 19:40:19 +00:00
void lovrCanvasResolve(Canvas* canvas);
2018-08-29 04:16:19 +00:00
bool lovrCanvasIsStereo(Canvas* canvas);
2020-02-23 06:19:59 +00:00
void lovrCanvasSetStereo(Canvas* canvas, bool stereo);
2019-05-20 21:34:03 +00:00
uint32_t lovrCanvasGetWidth(Canvas* canvas);
uint32_t lovrCanvasGetHeight(Canvas* canvas);
2020-02-23 06:19:59 +00:00
void lovrCanvasSetWidth(Canvas* canvas, uint32_t width);
void lovrCanvasSetHeight(Canvas* canvas, uint32_t height);
2019-05-20 21:34:03 +00:00
uint32_t lovrCanvasGetMSAA(Canvas* canvas);
2019-04-05 11:58:29 +00:00
struct Texture* lovrCanvasGetDepthTexture(Canvas* canvas);
struct Image* lovrCanvasNewImage(Canvas* canvas, uint32_t index);