Remove old VBO/IBO code

This commit is contained in:
fincs 2015-11-22 12:30:51 +01:00
parent 200858cf22
commit a39ca9971d
5 changed files with 16 additions and 117 deletions

View File

@ -10,7 +10,6 @@
#include "test_gsh.shader.h" #include "test_gsh.shader.h"
#include "grass_bin.h" #include "grass_bin.h"
#define VAR_3D_SLIDERSTATE (*(volatile float*)0x1FF81080)
#define EXTENDED_TOPSCR_RESOLUTION #define EXTENDED_TOPSCR_RESOLUTION
#ifndef EXTENDED_TOPSCR_RESOLUTION #ifndef EXTENDED_TOPSCR_RESOLUTION
@ -37,7 +36,7 @@ typedef struct
float color[3]; float color[3];
} vertex_t; } vertex_t;
static const vertex_t vertices[] = static const vertex_t vertex_list[] =
{ {
// First triangle // First triangle
{{-0.5f, +0.5f, -4.0f}, {0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}}, {{-0.5f, +0.5f, -4.0f}, {0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}},
@ -50,9 +49,11 @@ static const vertex_t vertices[] =
{{-0.5f, +0.5f, -4.0f}, {0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}}, {{-0.5f, +0.5f, -4.0f}, {0.0f, 1.0f}, {1.0f, 0.0f, 0.0f}},
}; };
#define vertex_list_count (sizeof(vertex_list)/sizeof(vertex_list[0]))
#define FOVY (2.0f/15) #define FOVY (2.0f/15)
static C3D_VBO myVbo; static void* myVbo;
static C3D_Tex myTex; static C3D_Tex myTex;
static void drawScene(float trX, float trY) static void drawScene(float trX, float trY)
@ -73,7 +74,7 @@ static void drawScene(float trX, float trY)
MtxStack_Update(&projMtx); MtxStack_Update(&projMtx);
MtxStack_Update(&mdlvMtx); MtxStack_Update(&mdlvMtx);
C3D_DrawArrays(GPU_TRIANGLES, 0, myVbo.vertexCount); C3D_DrawArrays(GPU_TRIANGLES, 0, vertex_list_count);
C3D_Flush(); C3D_Flush();
} }
@ -96,7 +97,7 @@ static void drawSceneBottom(float trX, float trY)
MtxStack_Update(&projMtx); MtxStack_Update(&projMtx);
MtxStack_Update(&mdlvMtx); MtxStack_Update(&mdlvMtx);
C3D_DrawArrays(GPU_TRIANGLES, 0, myVbo.vertexCount); C3D_DrawArrays(GPU_TRIANGLES, 0, vertex_list_count);
C3D_Flush(); C3D_Flush();
} }
@ -144,13 +145,13 @@ int main()
AttrInfo_AddLoader(attrInfo, 2, GPU_FLOAT, 3); // vertex color AttrInfo_AddLoader(attrInfo, 2, GPU_FLOAT, 3); // vertex color
// Configure VBO // Configure VBO
C3D_VBOInit(&myVbo, sizeof(vertices)); myVbo = linearAlloc(sizeof(vertex_list));
C3D_VBOAddData(&myVbo, vertices, sizeof(vertices), sizeof(vertices)/sizeof(vertex_t)); memcpy(myVbo, vertex_list, sizeof(vertex_list));
// Configure buffers // Configure buffers
C3D_BufInfo* bufInfo = C3D_GetBufInfo(); C3D_BufInfo* bufInfo = C3D_GetBufInfo();
BufInfo_Init(bufInfo); BufInfo_Init(bufInfo);
BufInfo_Add(bufInfo, myVbo.data, sizeof(vertex_t), 3, 0x210); BufInfo_Add(bufInfo, myVbo, sizeof(vertex_t), 3, 0x210);
// Clear renderbuffers // Clear renderbuffers
C3D_RenderBufClear(&rbTop); C3D_RenderBufClear(&rbTop);
@ -184,7 +185,7 @@ int main()
if (kHeld & KEY_R) if (kHeld & KEY_R)
zDist += 0.005f; zDist += 0.005f;
float slider = VAR_3D_SLIDERSTATE; float slider = osGet3DSliderState();
float czDist = zDist*slider/2; float czDist = zDist*slider/2;
drawScene(trX-czDist, trY); drawScene(trX-czDist, trY);

View File

@ -3,6 +3,12 @@
#include "buffers.h" #include "buffers.h"
#define C3D_DEFAULT_CMDBUF_SIZE 0x40000 #define C3D_DEFAULT_CMDBUF_SIZE 0x40000
enum
{
C3D_UNSIGNED_BYTE = 0,
C3D_UNSIGNED_SHORT = 1,
};
bool C3D_Init(size_t cmdBufSize); bool C3D_Init(size_t cmdBufSize);
void C3D_FlushAsync(void); void C3D_FlushAsync(void);
void C3D_Fini(void); void C3D_Fini(void);

View File

@ -19,35 +19,3 @@ int BufInfo_Add(C3D_BufInfo* info, const void* data, ptrdiff_t stride, int attr
C3D_BufInfo* C3D_GetBufInfo(void); C3D_BufInfo* C3D_GetBufInfo(void);
void C3D_SetBufInfo(C3D_BufInfo* info); void C3D_SetBufInfo(C3D_BufInfo* info);
typedef struct
{
void* data;
size_t capacity;
size_t size;
int vertexCount;
} C3D_VBO;
bool C3D_VBOInit(C3D_VBO* vbo, size_t capacity);
bool C3D_VBOAddData(C3D_VBO* vbo, const void* data, size_t size, int vertexCount);
void C3D_VBOFlush(C3D_VBO* vbo);
void C3D_VBODelete(C3D_VBO* vbo);
typedef struct
{
void* data;
int capacity;
int indexCount;
int format;
} C3D_IBO;
enum
{
C3D_UNSIGNED_BYTE = 0,
C3D_UNSIGNED_SHORT = 1,
};
bool C3D_IBOInit(C3D_IBO* ibo, int capacity, int format);
bool C3D_IBOAddData(C3D_IBO* ibo, const void* data, int indexCount);
void C3D_IBOFlush(C3D_IBO* ibo);
void C3D_IBODelete(C3D_IBO* ibo);

View File

@ -1,38 +0,0 @@
#include <c3d/buffers.h>
#include <string.h>
#include "context.h"
bool C3D_IBOCreate(C3D_IBO* ibo, int capacity, int format)
{
if (ibo->data) return false;
ibo->data = linearAlloc(capacity * (format+1));
if (!ibo->data) return false;
ibo->capacity = capacity;
ibo->indexCount = 0;
ibo->format = format;
return true;
}
bool C3D_IBOAddData(C3D_IBO* ibo, const void* data, int indexCount)
{
int remaining = ibo->capacity - ibo->indexCount;
if (remaining < indexCount) return false;
int stride = ibo->format+1;
memcpy((u8*)ibo->data + ibo->indexCount*stride, data, indexCount*stride);
ibo->indexCount += indexCount;
return true;
}
void C3D_IBOFlush(C3D_IBO* ibo)
{
int stride = ibo->format+1;
GSPGPU_FlushDataCache(ibo->data, ibo->indexCount*stride);
}
void C3D_IBODelete(C3D_IBO* ibo)
{
if (!ibo->data) return;
linearFree(ibo->data);
ibo->data = NULL;
}

View File

@ -1,38 +0,0 @@
#include <c3d/buffers.h>
#include <string.h>
#include "context.h"
bool C3D_VBOInit(C3D_VBO* vbo, size_t capacity)
{
if (vbo->data) return false;
vbo->data = linearAlloc(capacity);
if (!vbo->data) return false;
vbo->capacity = capacity;
vbo->size = 0;
vbo->vertexCount = 0;
return true;
}
bool C3D_VBOAddData(C3D_VBO* vbo, const void* data, size_t size, int vertexCount)
{
size_t remaining = vbo->capacity - vbo->size;
if (remaining < size) return false;
memcpy((u8*)vbo->data + vbo->size, data, size);
vbo->size += size;
vbo->vertexCount += vertexCount;
return true;
}
void C3D_VBOFlush(C3D_VBO* vbo)
{
if (vbo->data)
GSPGPU_FlushDataCache(vbo->data, vbo->size);
}
void C3D_VBODelete(C3D_VBO* vbo)
{
if (!vbo->data) return;
linearFree(vbo->data);
vbo->data = NULL;
}