citro3d/include/c3d/base.h

47 lines
1.1 KiB
C
Raw Normal View History

2014-12-20 21:34:19 +01:00
#pragma once
#include "buffers.h"
2017-02-09 04:30:25 +01:00
#include "maths.h"
2014-12-20 21:34:19 +01:00
#define C3D_DEFAULT_CMDBUF_SIZE 0x40000
2015-11-22 12:30:51 +01:00
enum
{
C3D_UNSIGNED_BYTE = 0,
C3D_UNSIGNED_SHORT = 1,
};
2014-12-20 21:34:19 +01:00
bool C3D_Init(size_t cmdBufSize);
void C3D_Fini(void);
2016-01-19 22:32:55 +01:00
float C3D_GetCmdBufUsage(void);
void C3D_BindProgram(shaderProgram_s* program);
void C3D_SetViewport(u32 x, u32 y, u32 w, u32 h);
2015-11-26 23:54:06 +01:00
void C3D_SetScissor(GPU_SCISSORMODE mode, u32 left, u32 top, u32 right, u32 bottom);
void C3D_DrawArrays(GPU_Primitive_t primitive, int first, int size);
void C3D_DrawElements(GPU_Primitive_t primitive, int count, int type, const void* indices);
2014-12-20 21:34:19 +01:00
// Immediate-mode vertex submission
void C3D_ImmDrawBegin(GPU_Primitive_t primitive);
void C3D_ImmSendAttrib(float x, float y, float z, float w);
void C3D_ImmDrawEnd(void);
2016-01-19 22:33:04 +01:00
static inline void C3D_ImmDrawRestartPrim(void)
{
GPUCMD_AddWrite(GPUREG_RESTART_PRIMITIVE, 1);
}
// Fixed vertex attributes
C3D_FVec* C3D_FixedAttribGetWritePtr(int id);
static inline void C3D_FixedAttribSet(int id, float x, float y, float z, float w)
{
C3D_FVec* ptr = C3D_FixedAttribGetWritePtr(id);
ptr->x = x;
ptr->y = y;
ptr->z = z;
ptr->w = w;
}