Phase 1 of renaming VertexP3fT2fC4b/P3fC4b to VertexTextured/Coloured

This commit is contained in:
UnknownShadow200 2020-05-06 22:08:06 +10:00
parent a092b86ac8
commit 64a968237c
14 changed files with 114 additions and 111 deletions

View File

@ -32,7 +32,7 @@ void AxisLinesRenderer_Render(void) {
if (!AxisLinesRenderer_Enabled || Gfx.LostContext) return;
/* Don't do it in a ContextRecreated handler, because we only want VB recreated if ShowAxisLines in on. */
if (!axisLines_vb) {
axisLines_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FC4B, AXISLINES_NUM_VERTICES);
axisLines_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_COLOURED, AXISLINES_NUM_VERTICES);
}
Gfx_SetTexturing(false);
@ -45,7 +45,7 @@ void AxisLinesRenderer_Render(void) {
Vec3_Add1(&coords[3], &pos, AXISLINES_THICKNESS);
Vec3_Add1(&coords[4], &pos, AXISLINES_LENGTH);
v = (VertexP3fC4b*)Gfx_LockDynamicVb(axisLines_vb, VERTEX_FORMAT_P3FC4B, AXISLINES_NUM_VERTICES);
v = (VertexP3fC4b*)Gfx_LockDynamicVb(axisLines_vb, VERTEX_FORMAT_COLOURED, AXISLINES_NUM_VERTICES);
for (i = 0; i < count; i++, v++) {
v->X = coords[indices[i*3 + 0]].X;
v->Y = coords[indices[i*3 + 1]].Y;
@ -53,7 +53,7 @@ void AxisLinesRenderer_Render(void) {
v->Col = cols[i >> 2];
}
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
Gfx_UnlockDynamicVb(axisLines_vb);
Gfx_DrawVb_IndexedTris(count);
}

View File

@ -393,7 +393,7 @@ static cc_bool BuildChunk(int x1, int y1, int z1, struct ChunkInfo* info) {
#ifndef CC_BUILD_GL11
/* add an extra element to fix crashing on some GPUs */
Builder_Vertices = Gfx_CreateAndLockVb(VERTEX_FORMAT_P3FT2FC4B, totalVerts + 1, &info->Vb);
Builder_Vertices = Gfx_CreateAndLockVb(VERTEX_FORMAT_TEXTURED, totalVerts + 1, &info->Vb);
#else
/* NOTE: Relies on assumption vb is ignored by GL11 Gfx_LockVb implementation */
Builder_Vertices = Gfx_LockVb(0, VERTEX_FORMAT_P3FT2FC4B, totalVerts + 1);

View File

@ -304,7 +304,7 @@ static void DrawName(struct Entity* e) {
}
Particle_DoRender(&size, &pos, &e->NameTex.uv, col, vertices);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_UpdateDynamicVb_IndexedTris(Gfx_texVb, vertices, 4);
}
@ -673,7 +673,7 @@ void Entities_DrawShadows(void) {
Gfx_SetAlphaBlending(true);
Gfx_SetTexturing(true);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
ShadowComponent_Draw(Entities.List[ENTITIES_SELF_ID]);
if (Entities.ShadowsMode == SHADOW_MODE_CIRCLE_ALL) {

View File

@ -144,7 +144,7 @@ void EnvRenderer_RenderClouds(void) {
Gfx_SetAlphaTest(true);
Gfx_SetTexturing(true);
Gfx_BindTexture(clouds_tex);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_BindVb(clouds_vb);
Gfx_DrawVb_IndexedTris(clouds_vertices);
Gfx_SetAlphaTest(false);
@ -194,7 +194,7 @@ static void UpdateClouds(void) {
z1 = -extent; z2 = World.Length + extent;
clouds_vertices = CalcNumVertices(x2 - x1, z2 - z1);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_P3FT2FC4B, clouds_vertices, &clouds_vb);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_TEXTURED, clouds_vertices, &clouds_vb);
DrawCloudsY(x1, z1, x2, z2, Env.CloudsHeight, data);
Gfx_UnlockVb(clouds_vb);
}
@ -213,7 +213,7 @@ void EnvRenderer_RenderSky(void) {
normY = (float)World.Height + 8.0f;
skyY = max(Camera.CurrentPos.Y + 8.0f, normY);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
Gfx_BindVb(sky_vb);
if (skyY == normY) {
@ -265,7 +265,7 @@ static void UpdateSky(void) {
z1 = -extent; z2 = World.Length + extent;
sky_vertices = CalcNumVertices(x2 - x1, z2 - z1);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_P3FC4B, sky_vertices, &sky_vb);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_COLOURED, sky_vertices, &sky_vb);
height = max((World.Height + 2), Env.CloudsHeight) + 6;
DrawSkyY(x1, z1, x2, z2, height, data);
Gfx_UnlockVb(sky_vb);
@ -287,7 +287,7 @@ void EnvRenderer_RenderSkybox(void) {
Gfx_SetDepthWrite(false);
Gfx_SetTexturing(true);
Gfx_BindTexture(skybox_tex);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
/* Base skybox rotation */
rotTime = (float)(Game.Time * 2 * MATH_PI); /* So speed of 1 rotates whole skybox every second */
@ -338,7 +338,7 @@ static void UpdateSkybox(void) {
if (Gfx.LostContext) return;
if (EnvRenderer_Minimal) return;
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_P3FT2FC4B, SKYBOX_COUNT, &skybox_vb);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_TEXTURED, SKYBOX_COUNT, &skybox_vb);
Mem_Copy(data, vertices, sizeof(vertices));
for (i = 0; i < SKYBOX_COUNT; i++) { data[i].Col = Env.SkyboxCol; }
Gfx_UnlockVb(skybox_vb);
@ -514,7 +514,7 @@ void EnvRenderer_RenderWeather(double deltaTime) {
Gfx_SetDepthWrite(false);
Gfx_SetAlphaArgBlend(true);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
vCount = (int)(v - vertices);
Gfx_UpdateDynamicVb_IndexedTris(weather_vb, vertices, vCount);
@ -540,7 +540,7 @@ static void RenderBorders(BlockID block, GfxResourceID vb, GfxResourceID tex, in
Gfx_EnableMipmaps();
Gfx_BindTexture(tex);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_BindVb(vb);
Gfx_DrawVb_IndexedTris(count);
@ -688,7 +688,7 @@ static void UpdateMapSides(void) {
sides_vertices += CalcNumVertices(World.Width, World.Length); /* YQuads beneath map */
sides_vertices += 2 * CalcNumVertices(World.Width, Math_AbsI(y)); /* ZQuads */
sides_vertices += 2 * CalcNumVertices(World.Length, Math_AbsI(y)); /* XQuads */
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_P3FT2FC4B, sides_vertices, &sides_vb);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_TEXTURED, sides_vertices, &sides_vb);
sides_fullBright = Blocks.FullBright[block];
col = sides_fullBright ? white : Env.ShadowCol;
@ -733,7 +733,7 @@ static void UpdateMapEdges(void) {
r = rects[i];
edges_vertices += CalcNumVertices(r.Width, r.Height); /* YPlanes outside */
}
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_P3FT2FC4B, edges_vertices, &edges_vb);
data = Gfx_CreateAndLockVb(VERTEX_FORMAT_TEXTURED, edges_vertices, &edges_vb);
edges_fullBright = Blocks.FullBright[block];
col = edges_fullBright ? white : Env.SunCol;
@ -778,7 +778,7 @@ static void UpdateAll(void) {
Gfx_DeleteDynamicVb(&weather_vb);
if (Gfx.LostContext) return;
/* TODO: Don't allocate unless used? */
weather_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, WEATHER_VERTS_COUNT);
weather_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_TEXTURED, WEATHER_VERTS_COUNT);
/* TODO: Don't need to do this on every new map */
UpdateBorderTextures();
}

View File

@ -22,7 +22,7 @@ struct _GfxData Gfx;
GfxResourceID Gfx_defaultIb;
GfxResourceID Gfx_quadVb, Gfx_texVb;
static const int gfx_strideSizes[2] = { 16, 24 };
static const int strideSizes[2] = { SIZEOF_VERTEX_COLOURED, SIZEOF_VERTEX_TEXTURED };
static int gfx_batchStride, gfx_batchFormat = -1;
static cc_bool gfx_vsync, gfx_fogEnabled;
@ -63,8 +63,8 @@ static void InitDefaultResources(void) {
MakeIndices(indices, GFX_MAX_INDICES);
Gfx_defaultIb = Gfx_CreateIb(indices, GFX_MAX_INDICES);
Gfx_quadVb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FC4B, 4);
Gfx_texVb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, 4);
Gfx_quadVb = Gfx_CreateDynamicVb(VERTEX_FORMAT_COLOURED, 4);
Gfx_texVb = Gfx_CreateDynamicVb(VERTEX_FORMAT_TEXTURED, 4);
}
static void FreeDefaultResources(void) {
@ -129,7 +129,7 @@ void Gfx_Draw2DFlat(int x, int y, int width, int height, PackedCol col) {
v->X = (float)(x + width); v->Y = (float)(y + height); v->Z = 0; v->Col = col; v++;
v->X = (float)x; v->Y = (float)(y + height); v->Z = 0; v->Col = col; v++;
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
Gfx_UpdateDynamicVb_IndexedTris(Gfx_quadVb, verts, 4);
}
@ -142,7 +142,7 @@ void Gfx_Draw2DGradient(int x, int y, int width, int height, PackedCol top, Pack
v->X = (float)(x + width); v->Y = (float)(y + height); v->Z = 0; v->Col = bottom; v++;
v->X = (float)x; v->Y = (float)(y + height); v->Z = 0; v->Col = bottom; v++;
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
Gfx_UpdateDynamicVb_IndexedTris(Gfx_quadVb, verts, 4);
}
@ -150,7 +150,7 @@ void Gfx_Draw2DTexture(const struct Texture* tex, PackedCol col) {
VertexP3fT2fC4b texVerts[4];
VertexP3fT2fC4b* ptr = texVerts;
Gfx_Make2DQuad(tex, col, &ptr);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_UpdateDynamicVb_IndexedTris(Gfx_texVb, texVerts, 4);
}
@ -720,7 +720,7 @@ void Gfx_DeleteIb(GfxResourceID* ib) { D3D9_FreeResource(ib); }
static IDirect3DVertexBuffer9* D3D9_AllocVertexBuffer(VertexFormat fmt, int count, DWORD usage) {
IDirect3DVertexBuffer9* vbuffer;
cc_result res;
int size = count * gfx_strideSizes[fmt];
int size = count * strideSizes[fmt];
for (;;) {
res = IDirect3DDevice9_CreateVertexBuffer(device, size, usage,
@ -746,7 +746,7 @@ static void D3D9_SetVbData(IDirect3DVertexBuffer9* buffer, void* data, int size,
static void* D3D9_LockVb(GfxResourceID vb, VertexFormat fmt, int count, int lockFlags) {
IDirect3DVertexBuffer9* buffer = (IDirect3DVertexBuffer9*)vb;
void* dst = NULL;
int size = count * gfx_strideSizes[fmt];
int size = count * strideSizes[fmt];
cc_result res = IDirect3DVertexBuffer9_Lock(buffer, 0, size, &dst, lockFlags);
if (res) Logger_Abort2(res, "D3D9_LockVb");
@ -782,7 +782,7 @@ void Gfx_SetVertexFormat(VertexFormat fmt) {
res = IDirect3DDevice9_SetFVF(device, d3d9_formatMappings[fmt]);
if (res) Logger_Abort2(res, "D3D9_SetBatchFormat");
gfx_batchStride = gfx_strideSizes[fmt];
gfx_batchStride = strideSizes[fmt];
}
void Gfx_DrawVb_Lines(int verticesCount) {
@ -1254,7 +1254,7 @@ void Gfx_DeleteVb(GfxResourceID* vb) {
}
void* Gfx_LockVb(GfxResourceID vb, VertexFormat fmt, int count) {
return FastAllocTempMem(count * gfx_strideSizes[fmt]);
return FastAllocTempMem(count * strideSizes[fmt]);
}
void Gfx_UnlockVb(GfxResourceID vb) {
@ -1293,7 +1293,7 @@ static int tmpCount;
void* Gfx_LockVb(GfxResourceID vb, VertexFormat fmt, int count) {
tmpFormat = fmt;
tmpCount = count;
return FastAllocTempMem(count * gfx_strideSizes[fmt]);
return FastAllocTempMem(count * strideSizes[fmt]);
}
void Gfx_UnlockVb(GfxResourceID vb) {
@ -1318,13 +1318,13 @@ GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) {
if (Gfx.LostContext) return 0;
id = GL_GenAndBind(GL_ARRAY_BUFFER);
size = maxVertices * gfx_strideSizes[fmt];
size = maxVertices * strideSizes[fmt];
_glBufferData(GL_ARRAY_BUFFER, size, NULL, GL_DYNAMIC_DRAW);
return id;
}
void* Gfx_LockDynamicVb(GfxResourceID vb, VertexFormat fmt, int count) {
return FastAllocTempMem(count * gfx_strideSizes[fmt]);
return FastAllocTempMem(count * strideSizes[fmt]);
}
void Gfx_UnlockDynamicVb(GfxResourceID vb) {
@ -1339,7 +1339,7 @@ void Gfx_SetDynamicVbData(GfxResourceID vb, void* vertices, int vCount) {
}
#else
GfxResourceID Gfx_CreateDynamicVb(VertexFormat fmt, int maxVertices) {
return (GfxResourceID)Mem_Alloc(maxVertices, gfx_strideSizes[fmt], "creating dynamic vb");
return (GfxResourceID)Mem_Alloc(maxVertices, strideSizes[fmt], "creating dynamic vb");
}
void Gfx_BindDynamicVb(GfxResourceID vb) {
@ -1691,7 +1691,7 @@ static void SwitchProgram(void) {
if (gfx_fogMode >= 1) index += 6; /* exp fog */
}
if (gfx_batchFormat == VERTEX_FORMAT_P3FT2FC4B) index += 2;
if (gfx_batchFormat == VERTEX_FORMAT_TEXTURED) index += 2;
if (gfx_texTransform) index += 2;
if (gfx_alphaTest) index += 1;
@ -1789,43 +1789,43 @@ static void Gfx_RestoreState(void) {
}
cc_bool Gfx_WarnIfNecessary(void) { return false; }
static void GL_SetupVbPos3fCol4b(void) {
glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(VertexP3fC4b), (void*)0);
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, sizeof(VertexP3fC4b), (void*)12);
static void GL_SetupVbColoured(void) {
glVertexAttribPointer(0, 3, GL_FLOAT, false, SIZEOF_VERTEX_COLOURED, (void*)0);
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, SIZEOF_VERTEX_COLOURED, (void*)12);
}
static void GL_SetupVbPos3fTex2fCol4b(void) {
glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(VertexP3fT2fC4b), (void*)0);
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, sizeof(VertexP3fT2fC4b), (void*)12);
glVertexAttribPointer(2, 2, GL_FLOAT, false, sizeof(VertexP3fT2fC4b), (void*)16);
static void GL_SetupVbTextured(void) {
glVertexAttribPointer(0, 3, GL_FLOAT, false, SIZEOF_VERTEX_TEXTURED, (void*)0);
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, SIZEOF_VERTEX_TEXTURED, (void*)12);
glVertexAttribPointer(2, 2, GL_FLOAT, false, SIZEOF_VERTEX_TEXTURED, (void*)16);
}
static void GL_SetupVbPos3fCol4b_Range(int startVertex) {
cc_uint32 offset = startVertex * (cc_uint32)sizeof(VertexP3fC4b);
glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(VertexP3fC4b), (void*)(offset));
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, sizeof(VertexP3fC4b), (void*)(offset + 12));
static void GL_SetupVbColoured_Range(int startVertex) {
cc_uint32 offset = startVertex * SIZEOF_VERTEX_COLOURED;
glVertexAttribPointer(0, 3, GL_FLOAT, false, SIZEOF_VERTEX_COLOURED, (void*)(offset));
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, SIZEOF_VERTEX_COLOURED, (void*)(offset + 12));
}
static void GL_SetupVbPos3fTex2fCol4b_Range(int startVertex) {
cc_uint32 offset = startVertex * (cc_uint32)sizeof(VertexP3fT2fC4b);
glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(VertexP3fT2fC4b), (void*)(offset));
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, sizeof(VertexP3fT2fC4b), (void*)(offset + 12));
glVertexAttribPointer(2, 2, GL_FLOAT, false, sizeof(VertexP3fT2fC4b), (void*)(offset + 16));
static void GL_SetupVbTextured_Range(int startVertex) {
cc_uint32 offset = startVertex * SIZEOF_VERTEX_TEXTURED;
glVertexAttribPointer(0, 3, GL_FLOAT, false, SIZEOF_VERTEX_TEXTURED, (void*)(offset));
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, SIZEOF_VERTEX_TEXTURED, (void*)(offset + 12));
glVertexAttribPointer(2, 2, GL_FLOAT, false, SIZEOF_VERTEX_TEXTURED, (void*)(offset + 16));
}
void Gfx_SetVertexFormat(VertexFormat fmt) {
if (fmt == gfx_batchFormat) return;
gfx_batchFormat = fmt;
gfx_batchStride = gfx_strideSizes[fmt];
gfx_batchStride = strideSizes[fmt];
if (fmt == VERTEX_FORMAT_P3FT2FC4B) {
if (fmt == VERTEX_FORMAT_TEXTURED) {
glEnableVertexAttribArray(2);
gfx_setupVBFunc = GL_SetupVbPos3fTex2fCol4b;
gfx_setupVBRangeFunc = GL_SetupVbPos3fTex2fCol4b_Range;
gfx_setupVBFunc = GL_SetupVbTextured;
gfx_setupVBRangeFunc = GL_SetupVbTextured_Range;
} else {
glDisableVertexAttribArray(2);
gfx_setupVBFunc = GL_SetupVbPos3fCol4b;
gfx_setupVBRangeFunc = GL_SetupVbPos3fCol4b_Range;
gfx_setupVBFunc = GL_SetupVbColoured;
gfx_setupVBRangeFunc = GL_SetupVbColoured_Range;
}
SwitchProgram();
}
@ -1846,10 +1846,10 @@ void Gfx_DrawVb_IndexedTris(int verticesCount) {
}
void Gfx_DrawIndexedVb_TrisT2fC4b(int verticesCount, int startVertex) {
cc_uint32 offset = startVertex * (cc_uint32)sizeof(VertexP3fT2fC4b);
glVertexAttribPointer(0, 3, GL_FLOAT, false, sizeof(VertexP3fT2fC4b), (void*)(offset));
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, sizeof(VertexP3fT2fC4b), (void*)(offset + 12));
glVertexAttribPointer(2, 2, GL_FLOAT, false, sizeof(VertexP3fT2fC4b), (void*)(offset + 16));
cc_uint32 offset = startVertex * SIZEOF_VERTEX_TEXTURED;
glVertexAttribPointer(0, 3, GL_FLOAT, false, SIZEOF_VERTEX_TEXTURED, (void*)(offset));
glVertexAttribPointer(1, 4, GL_UNSIGNED_BYTE, true, SIZEOF_VERTEX_TEXTURED, (void*)(offset + 12));
glVertexAttribPointer(2, 2, GL_FLOAT, false, SIZEOF_VERTEX_TEXTURED, (void*)(offset + 16));
glDrawElements(GL_TRIANGLES, ICOUNT(verticesCount), GL_UNSIGNED_SHORT, NULL);
}
#endif
@ -1956,43 +1956,43 @@ cc_bool Gfx_WarnIfNecessary(void) {
#define IB_PTR NULL
#endif
static void GL_SetupVbPos3fCol4b(void) {
glVertexPointer(3, GL_FLOAT, sizeof(VertexP3fC4b), (void*)(VB_PTR + 0));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexP3fC4b), (void*)(VB_PTR + 12));
static void GL_SetupVbColoured(void) {
glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, (void*)(VB_PTR + 0));
glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, (void*)(VB_PTR + 12));
}
static void GL_SetupVbPos3fTex2fCol4b(void) {
glVertexPointer(3, GL_FLOAT, sizeof(VertexP3fT2fC4b), (void*)(VB_PTR + 0));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexP3fT2fC4b), (void*)(VB_PTR + 12));
glTexCoordPointer(2, GL_FLOAT, sizeof(VertexP3fT2fC4b), (void*)(VB_PTR + 16));
static void GL_SetupVbTextured(void) {
glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (void*)(VB_PTR + 0));
glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (void*)(VB_PTR + 12));
glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (void*)(VB_PTR + 16));
}
static void GL_SetupVbPos3fCol4b_Range(int startVertex) {
cc_uint32 offset = startVertex * (cc_uint32)sizeof(VertexP3fC4b);
glVertexPointer(3, GL_FLOAT, sizeof(VertexP3fC4b), (void*)(VB_PTR + offset));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexP3fC4b), (void*)(VB_PTR + offset + 12));
static void GL_SetupVbColoured_Range(int startVertex) {
cc_uint32 offset = startVertex * SIZEOF_VERTEX_COLOURED;
glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_COLOURED, (void*)(VB_PTR + offset));
glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_COLOURED, (void*)(VB_PTR + offset + 12));
}
static void GL_SetupVbPos3fTex2fCol4b_Range(int startVertex) {
cc_uint32 offset = startVertex * (cc_uint32)sizeof(VertexP3fT2fC4b);
glVertexPointer(3, GL_FLOAT, sizeof(VertexP3fT2fC4b), (void*)(VB_PTR + offset));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexP3fT2fC4b), (void*)(VB_PTR + offset + 12));
glTexCoordPointer(2, GL_FLOAT, sizeof(VertexP3fT2fC4b), (void*)(VB_PTR + offset + 16));
static void GL_SetupVbTextured_Range(int startVertex) {
cc_uint32 offset = startVertex * SIZEOF_VERTEX_TEXTURED;
glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (void*)(VB_PTR + offset));
glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (void*)(VB_PTR + offset + 12));
glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (void*)(VB_PTR + offset + 16));
}
void Gfx_SetVertexFormat(VertexFormat fmt) {
if (fmt == gfx_batchFormat) return;
gfx_batchFormat = fmt;
gfx_batchStride = gfx_strideSizes[fmt];
gfx_batchStride = strideSizes[fmt];
if (fmt == VERTEX_FORMAT_P3FT2FC4B) {
if (fmt == VERTEX_FORMAT_TEXTURED) {
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
gfx_setupVBFunc = GL_SetupVbPos3fTex2fCol4b;
gfx_setupVBRangeFunc = GL_SetupVbPos3fTex2fCol4b_Range;
gfx_setupVBFunc = GL_SetupVbTextured;
gfx_setupVBRangeFunc = GL_SetupVbTextured_Range;
} else {
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
gfx_setupVBFunc = GL_SetupVbPos3fCol4b;
gfx_setupVBRangeFunc = GL_SetupVbPos3fCol4b_Range;
gfx_setupVBFunc = GL_SetupVbColoured;
gfx_setupVBRangeFunc = GL_SetupVbColoured_Range;
}
}
@ -2019,10 +2019,10 @@ void Gfx_DrawVb_IndexedTris(int verticesCount) {
#ifndef CC_BUILD_GL11
void Gfx_DrawIndexedVb_TrisT2fC4b(int verticesCount, int startVertex) {
cc_uint32 offset = startVertex * (cc_uint32)sizeof(VertexP3fT2fC4b);
glVertexPointer(3, GL_FLOAT, sizeof(VertexP3fT2fC4b), (void*)(offset));
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(VertexP3fT2fC4b), (void*)(offset + 12));
glTexCoordPointer(2, GL_FLOAT, sizeof(VertexP3fT2fC4b), (void*)(offset + 16));
cc_uint32 offset = startVertex * SIZEOF_VERTEX_TEXTURED;
glVertexPointer(3, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (void*)(offset));
glColorPointer(4, GL_UNSIGNED_BYTE, SIZEOF_VERTEX_TEXTURED, (void*)(offset + 12));
glTexCoordPointer(2, GL_FLOAT, SIZEOF_VERTEX_TEXTURED, (void*)(offset + 16));
glDrawElements(GL_TRIANGLES, ICOUNT(verticesCount), GL_UNSIGNED_SHORT, NULL);
}

View File

@ -11,7 +11,7 @@
struct Stream;
typedef enum VertexFormat_ {
VERTEX_FORMAT_P3FC4B, VERTEX_FORMAT_P3FT2FC4B
VERTEX_FORMAT_COLOURED, VERTEX_FORMAT_TEXTURED
} VertexFormat;
typedef enum FogFunc_ {
FOG_LINEAR, FOG_EXP, FOG_EXP2
@ -20,6 +20,9 @@ typedef enum MatrixType_ {
MATRIX_PROJECTION, MATRIX_VIEW, MATRIX_TEXTURE
} MatrixType;
#define SIZEOF_VERTEX_TEXTURED 24
#define SIZEOF_VERTEX_COLOURED 16
void Gfx_Init(void);
void Gfx_Free(void);

View File

@ -189,7 +189,7 @@ void MapRenderer_RenderNormal(double delta) {
int batch;
if (!mapChunks) return;
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_SetTexturing(true);
Gfx_SetAlphaTest(true);
@ -266,7 +266,7 @@ void MapRenderer_RenderTranslucent(double delta) {
/* First fill depth buffer */
vertices = Game_Vertices;
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_SetTexturing(false);
Gfx_SetAlphaBlending(false);
Gfx_SetColWriteMask(false, false, false, false);

View File

@ -3092,7 +3092,7 @@ static void TexIdsOverlay_BuildMesh(void* screen) {
VertexP3fT2fC4b* data;
VertexP3fT2fC4b** ptr;
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(s->vb, VERTEX_FORMAT_P3FT2FC4B, s->maxVertices);
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(s->vb, VERTEX_FORMAT_TEXTURED, s->maxVertices);
ptr = &data;
Widget_BuildMesh(&s->title, ptr);
@ -3142,7 +3142,7 @@ static void TexIdsOverlay_Render(void* screen, double delta) {
Menu_RenderBounds();
Gfx_SetTexturing(true);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_BindDynamicVb(s->vb);
offset = Widget_Render2(&s->title, offset);

View File

@ -99,7 +99,7 @@ void Model_Render(struct Model* model, struct Entity* entity) {
if (model->bobbing) pos.Y += entity->Anim.BobbingModel;
Model_SetupState(model, entity);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
model->GetTransform(entity, pos, &entity->Transform);
Matrix_Mul(&m, &entity->Transform, &Gfx.View);
@ -246,7 +246,7 @@ void Model_RenderArm(struct Model* model, struct Entity* entity) {
if (model->bobbing) pos.Y += entity->Anim.BobbingModel;
Model_SetupState(model, entity);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Model_ApplyTexture(entity);
if (Models.ClassicArms) {
@ -377,7 +377,7 @@ static void Models_ContextLost(void* obj) {
}
static void Models_ContextRecreated(void* obj) {
Models.Vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, Models.MaxVertices);
Models.Vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_TEXTURED, Models.MaxVertices);
}
static void MakeModel(struct Model* model) {

View File

@ -160,7 +160,7 @@ static void Rain_Render(float t) {
int i;
if (!rain_count) return;
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(Particles_VB, VERTEX_FORMAT_P3FT2FC4B, rain_count * 4);
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(Particles_VB, VERTEX_FORMAT_TEXTURED, rain_count * 4);
for (i = 0; i < rain_count; i++) {
RainParticle_Render(&rain_Particles[i], t, data);
data += 4;
@ -253,7 +253,7 @@ static void Terrain_Render(float t) {
int i, index;
if (!terrain_count) return;
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(Particles_VB, VERTEX_FORMAT_P3FT2FC4B, terrain_count * 4);
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(Particles_VB, VERTEX_FORMAT_TEXTURED, terrain_count * 4);
Terrain_Update1DCounts();
for (i = 0; i < terrain_count; i++) {
index = Atlas1D_Index(terrain_particles[i].texLoc);
@ -358,7 +358,7 @@ static void Custom_Render(float t) {
int i;
if (!custom_count) return;
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(Particles_VB, VERTEX_FORMAT_P3FT2FC4B, custom_count * 4);
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(Particles_VB, VERTEX_FORMAT_TEXTURED, custom_count * 4);
for (i = 0; i < custom_count; i++) {
CustomParticle_Render(&custom_particles[i], t, data);
data += 4;
@ -396,7 +396,7 @@ void Particles_Render(float t) {
Gfx_SetTexturing(true);
Gfx_SetAlphaTest(true);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Terrain_Render(t);
Rain_Render(t);
Custom_Render(t);
@ -573,7 +573,7 @@ static void OnContextLost(void* obj) {
Gfx_DeleteDynamicVb(&Particles_VB);
}
static void OnContextRecreated(void* obj) {
Particles_VB = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, PARTICLES_MAX * 4);
Particles_VB = Gfx_CreateDynamicVb(VERTEX_FORMAT_TEXTURED, PARTICLES_MAX * 4);
}
static void OnBreakBlockEffect_Handler(void* obj, IVec3 coords, BlockID old, BlockID now) {
Particles_BreakBlockEffect(coords, old, now);

View File

@ -75,7 +75,7 @@ static void BuildMesh(struct RayTracer* selected) {
Vec3_Add1(&coords[3], &selected->Max, offset);
Vec3_Add1(&coords[2], &coords[3], -size);
ptr = (VertexP3fC4b*)Gfx_LockDynamicVb(pickedPos_vb, VERTEX_FORMAT_P3FC4B, PICKEDPOS_NUM_VERTICES);
ptr = (VertexP3fC4b*)Gfx_LockDynamicVb(pickedPos_vb, VERTEX_FORMAT_COLOURED, PICKEDPOS_NUM_VERTICES);
for (i = 0; i < Array_Elems(indices); i += 3, ptr++) {
ptr->X = coords[indices[i + 0]].X;
ptr->Y = coords[indices[i + 1]].Y;
@ -90,7 +90,7 @@ void PickedPosRenderer_Render(struct RayTracer* selected, cc_bool dirty) {
Gfx_SetAlphaBlending(true);
Gfx_SetDepthWrite(false);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
if (dirty) BuildMesh(selected);
else Gfx_BindDynamicVb(pickedPos_vb);
@ -109,7 +109,7 @@ static void OnContextLost(void* obj) {
}
static void OnContextRecreated(void* obj) {
pickedPos_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FC4B, PICKEDPOS_NUM_VERTICES);
pickedPos_vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_COLOURED, PICKEDPOS_NUM_VERTICES);
}
static void PickedPosRenderer_Init(void) {

View File

@ -67,7 +67,7 @@ void Screen_Render2Widgets(void* screen, double delta) {
struct Widget** widgets = s->widgets;
int i, offset = 0;
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
Gfx_BindDynamicVb(s->vb);
for (i = 0; i < s->numWidgets; i++) {
@ -101,7 +101,7 @@ void Screen_ContextLost(void* screen) {
void Screen_CreateVb(void* screen) {
struct Screen* s = (struct Screen*)screen;
s->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, s->maxVertices);
s->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_TEXTURED, s->maxVertices);
}
void Screen_BuildMesh(void* screen) {
@ -111,7 +111,7 @@ void Screen_BuildMesh(void* screen) {
VertexP3fT2fC4b** ptr;
int i;
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(s->vb, VERTEX_FORMAT_P3FT2FC4B, s->maxVertices);
data = (VertexP3fT2fC4b*)Gfx_LockDynamicVb(s->vb, VERTEX_FORMAT_TEXTURED, s->maxVertices);
ptr = &data;
for (i = 0; i < s->numWidgets; i++) {
@ -1588,7 +1588,7 @@ static void LoadingScreen_UpdateBackgroundVB(VertexP3fT2fC4b* vertices, int coun
Gfx_BindTexture(Atlas1D.TexIds[atlasIndex]);
}
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
/* TODO: Do we need to use a separate VB here? */
Gfx_UpdateDynamicVb_IndexedTris(Models.Vb, vertices, count);
}

View File

@ -144,8 +144,8 @@ static void Selections_ContextLost(void* obj) {
static void Selections_ContextRecreated(void* obj) {
if (!selections_used) return;
selections_VB = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FC4B, SELECTIONS_MAX_VERTICES);
selections_LineVB = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FC4B, SELECTIONS_MAX_VERTICES);
selections_VB = Gfx_CreateDynamicVb(VERTEX_FORMAT_COLOURED, SELECTIONS_MAX_VERTICES);
selections_LineVB = Gfx_CreateDynamicVb(VERTEX_FORMAT_COLOURED, SELECTIONS_MAX_VERTICES);
}
static void Selections_QuickSort(int left, int right) {
@ -186,16 +186,16 @@ void Selections_Render(void) {
Selections_ContextRecreated(NULL);
}
count = selections_count * SELECTIONS_VERTICES;
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_COLOURED);
data = (VertexP3fC4b*)Gfx_LockDynamicVb(selections_LineVB, VERTEX_FORMAT_P3FC4B, count);
data = (VertexP3fC4b*)Gfx_LockDynamicVb(selections_LineVB, VERTEX_FORMAT_COLOURED, count);
for (i = 0; i < selections_count; i++, data += SELECTIONS_VERTICES) {
SelectionBox_RenderEdges(&selections_list[i], data);
}
Gfx_UnlockDynamicVb(selections_LineVB);
Gfx_DrawVb_Lines(count);
data = (VertexP3fC4b*)Gfx_LockDynamicVb(selections_VB, VERTEX_FORMAT_P3FC4B, count);
data = (VertexP3fC4b*)Gfx_LockDynamicVb(selections_VB, VERTEX_FORMAT_COLOURED, count);
for (i = 0; i < selections_count; i++, data += SELECTIONS_VERTICES) {
SelectionBox_RenderFaces(&selections_list[i], data);
}

View File

@ -680,7 +680,7 @@ static void TableWidget_Render(void* widget, double delta) {
size, size, topSelCol, bottomSelCol);
}
Gfx_SetTexturing(true);
Gfx_SetVertexFormat(VERTEX_FORMAT_P3FT2FC4B);
Gfx_SetVertexFormat(VERTEX_FORMAT_TEXTURED);
IsometricDrawer_BeginBatch(vertices, w->vb);
for (i = 0; i < w->blocksCount; i++) {
@ -715,7 +715,7 @@ static void TableWidget_Free(void* widget) {
void TableWidget_Recreate(struct TableWidget* w) {
Elem_TryFree(w);
w->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_P3FT2FC4B, TABLE_MAX_VERTICES);
w->vb = Gfx_CreateDynamicVb(VERTEX_FORMAT_TEXTURED, TABLE_MAX_VERTICES);
TableWidget_RecreateDescTex(w);
}