mirror of
https://github.com/zetaPRIME/libstarlight.git
synced 2025-06-26 05:32:46 +00:00
don't reinit attrinfo for every quad
This commit is contained in:
parent
296826a927
commit
3c9fc00ac8
@ -42,6 +42,9 @@ namespace { // internals
|
|||||||
shaderProgram_s shader;
|
shaderProgram_s shader;
|
||||||
int sLocProjection = -1;
|
int sLocProjection = -1;
|
||||||
|
|
||||||
|
C3D_AttrInfo* attrInfo = nullptr;
|
||||||
|
C3D_BufInfo* bufInfo = nullptr;
|
||||||
|
|
||||||
void ResetBuffer() { bufferInd = 0; }
|
void ResetBuffer() { bufferInd = 0; }
|
||||||
|
|
||||||
void* AllocBuffer(size_t size, size_t align = 1) {
|
void* AllocBuffer(size_t size, size_t align = 1) {
|
||||||
@ -95,10 +98,20 @@ void RenderCore::Open() {
|
|||||||
gfxSet3D(true);
|
gfxSet3D(true);
|
||||||
C3D_Init(0x80000*8);
|
C3D_Init(0x80000*8);
|
||||||
|
|
||||||
|
// allocate and init VBO
|
||||||
bufferSize = 0x80000;
|
bufferSize = 0x80000;
|
||||||
bufferStart = linearAlloc(bufferSize);
|
bufferStart = linearAlloc(bufferSize);
|
||||||
bufferInd = 0;
|
bufferInd = 0;
|
||||||
|
|
||||||
|
bufInfo = C3D_GetBufInfo();
|
||||||
|
BufInfo_Init(bufInfo);
|
||||||
|
|
||||||
|
// set up shader attribute passing
|
||||||
|
attrInfo = C3D_GetAttrInfo();
|
||||||
|
AttrInfo_Init(attrInfo);
|
||||||
|
AttrInfo_AddLoader(attrInfo, 0, GPU_FLOAT, 3);
|
||||||
|
AttrInfo_AddLoader(attrInfo, 1, GPU_FLOAT, 2);
|
||||||
|
|
||||||
// set up screen targets
|
// set up screen targets
|
||||||
targetTopLeft = std::make_unique<CRenderTarget>(240, 400, true);
|
targetTopLeft = std::make_unique<CRenderTarget>(240, 400, true);
|
||||||
targetTopRight = std::make_unique<CRenderTarget>(240, 400, true);
|
targetTopRight = std::make_unique<CRenderTarget>(240, 400, true);
|
||||||
@ -214,12 +227,7 @@ void RenderCore::DrawQuad(const VRect& rect, const VRect& src, bool noSnap) {
|
|||||||
setXYZUV(verts[2], rl, rb, 0, srl, srb);
|
setXYZUV(verts[2], rl, rb, 0, srl, srb);
|
||||||
setXYZUV(verts[3], rr, rb, 0, srr, srb);
|
setXYZUV(verts[3], rr, rb, 0, srr, srb);
|
||||||
|
|
||||||
C3D_AttrInfo* attrInfo = C3D_GetAttrInfo();
|
bufInfo = C3D_GetBufInfo();
|
||||||
AttrInfo_Init(attrInfo);
|
|
||||||
AttrInfo_AddLoader(attrInfo, 0, GPU_FLOAT, 3);
|
|
||||||
AttrInfo_AddLoader(attrInfo, 1, GPU_FLOAT, 2);
|
|
||||||
|
|
||||||
C3D_BufInfo* bufInfo = C3D_GetBufInfo();
|
|
||||||
BufInfo_Init(bufInfo);
|
BufInfo_Init(bufInfo);
|
||||||
BufInfo_Add(bufInfo, verts, sizeof(vbo_xyzuv), 2, 0x10);
|
BufInfo_Add(bufInfo, verts, sizeof(vbo_xyzuv), 2, 0x10);
|
||||||
|
|
||||||
@ -234,12 +242,7 @@ void RenderCore::DrawQuad(const VRect& rect, const Vector2& anchor, float angle,
|
|||||||
setXYZUV(verts[2], rect.BottomLeft().RotateAround(anchor, angle), src.BottomLeft());
|
setXYZUV(verts[2], rect.BottomLeft().RotateAround(anchor, angle), src.BottomLeft());
|
||||||
setXYZUV(verts[3], rect.BottomRight().RotateAround(anchor, angle), src.BottomRight());
|
setXYZUV(verts[3], rect.BottomRight().RotateAround(anchor, angle), src.BottomRight());
|
||||||
|
|
||||||
C3D_AttrInfo* attrInfo = C3D_GetAttrInfo();
|
bufInfo = C3D_GetBufInfo();
|
||||||
AttrInfo_Init(attrInfo);
|
|
||||||
AttrInfo_AddLoader(attrInfo, 0, GPU_FLOAT, 3);
|
|
||||||
AttrInfo_AddLoader(attrInfo, 1, GPU_FLOAT, 2);
|
|
||||||
|
|
||||||
C3D_BufInfo* bufInfo = C3D_GetBufInfo();
|
|
||||||
BufInfo_Init(bufInfo);
|
BufInfo_Init(bufInfo);
|
||||||
BufInfo_Add(bufInfo, verts, sizeof(vbo_xyzuv), 2, 0x10);
|
BufInfo_Add(bufInfo, verts, sizeof(vbo_xyzuv), 2, 0x10);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user