commit x64 compilation from lulu cause the other branch dont seems to compile properly at home

This commit is contained in:
2026-07-17 16:08:20 +02:00
parent c0f3eeb00d
commit 0efa4ee6f7
625 changed files with 117283 additions and 4426 deletions

View File

@ -0,0 +1,109 @@
/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "gpu/gpu_geometry.h"
#include "gpu/gpu_renderer.h"
#include "core/geometry.h"
#include "core/geometry_to_triangle_list.h"
#include "core/triangle_list.h"
#include "log/log.h"
using namespace GS::GPU;
//------------------------------------------------------------------------------
bool Geometry::AllocateVBO(uint count)
{
if (!vbo.Allocate(count))
return false;
for (uint n = 0; n < count; ++n)
vbo[n] = renderer.NewVBO();
return true;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool Geometry::SetMaterial(uint index, GS::Render::Material *m)
{
if (index >= material_table.GetCount())
return false;
// Update all display lists using this material index.
for (uint n = 0; n < display_list.GetCount(); ++n)
if (DisplayList *dlist = display_list[n])
if (dlist->material == material_table[index])
dlist->material = (GPU::Material *)m;
// Update the material table.
material_table[index] = m;
return true;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool Geometry::ShouldReloadOnDependencyChange(const char *n) const
{
for (uint i = 0; i < material_table.GetCount(); ++i)
if (material_table[i] && (material_table[i]->name == n))
return true;
return name == n;
}
//------------------------------------------------------------------------------
//------------------------------------------------------------------------------
bool Geometry::Create(GS::Render::ResourceFactory &rf, const GS::Core::Geometry &g)
{
__LOG_H__ << "Setup geometry '" << g.name << "'.\n";
name = g.name;
using namespace Core;
// Setup materials.
if (material_table.Allocate(g.material_table.GetCount()))
for (uint n = 0; n < g.material_table.GetCount(); ++n)
material_table[n] = rf.LoadMaterial(g.material_table[n].name, !g.material_table[n].use_cache);
// Build geometry triangle list.
AutoList <Trilist *> tlist;
if (!GeometryToTriangleList::Convert(g, tlist))
return false;
// Setup geometry display lists.
if (display_list.Allocate(tlist.GetCount()))
{
uint n = 0;
ListForeachPtr(Trilist *, t, tlist)
{
display_list[n] = renderer.NewDisplayList();
display_list[n]->Create(t, material_table[t->mat]);
++n;
}
}
flag = g.flag;
// Skinning.
bone_bind_matrix.Clone(g.bone_bind_matrix);
g.ComputeBoneBoundingVolumes(bone_minmax);
// Load proxies.
if (!g.lod_proxy.IsEmpty())
lod_proxy = rf.LoadGeometry(g.lod_proxy);
lod_distance = g.lod_distance;
if (!g.shadow_proxy.IsEmpty())
shadow_proxy = rf.LoadGeometry(g.shadow_proxy);
minmax = g.ComputeMinMax();
// hotspot.Set(0, 0, 0);
hotspot = (minmax.mn + minmax.mx) * 0.5f;
return true;
}
//------------------------------------------------------------------------------