first commit

This commit is contained in:
2026-06-22 11:49:35 +02:00
commit d805f2ba86
619 changed files with 126873 additions and 0 deletions

View File

@ -0,0 +1,78 @@
/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
------------------------------------------------------------------------------*/
#ifndef __GPUVBO__
#define __GPUVBO__
#include "memory/memory.h"
#include "alloc/ialloc.h"
namespace GS {
namespace GPU {
class Renderer;
/*!
@short GPU data buffer object.
*/
struct VBO
{
NPLACEMENT_NEW(Renderer)
enum Usage
{
Static = 0,
Dynamic
};
enum Type
{
Index = 0,
Vertex
};
Renderer &renderer;
/// Get VBO size.
virtual size_t GetSize() const = 0;
/// Map VBO to main memory.
virtual void *Map() = 0;
/// Unmap VBO.
virtual void Unmap() = 0;
/// Update VBO content.
virtual bool Update(const void *, size_t start = 0, size_t size = 0) = 0;
/// Create VBO.
virtual bool Create(size_t size, Type = Vertex, Usage = Static) = 0;
/// Create VBO, map and set data.
virtual bool Create(const void *data, size_t size, Type type = Vertex, Usage usage = Static)
{
if (!Create(size, type, usage))
return false;
void *p = Map();
if (!p)
return false;
Memory::Copy(p, data, size);
Unmap();
return true;
}
/// Free VBO.
virtual void Free() = 0;
VBO(Renderer &r) : renderer(r) {}
virtual ~VBO() {}
};
} // GPU
} // GS
#endif // __GPUVBO__