raze/source/common/rendering/hwrenderer/data/hw_bonebuffer.h
Christoph Oelckers 5eb9af1e00 - Backend update from GZDoom
IQM model support and a few bugfixes.
2022-10-20 22:24:25 +02:00

43 lines
991 B
C++

#pragma once
#include "tarray.h"
#include "hwrenderer/data/buffers.h"
#include "common/utility/matrix.h"
#include <atomic>
#include <mutex>
class FRenderState;
class BoneBuffer
{
IDataBuffer *mBuffer;
IDataBuffer* mBufferPipeline[HW_MAX_PIPELINE_BUFFERS];
int mPipelineNbr;
int mPipelinePos = 0;
bool mBufferType;
std::atomic<unsigned int> mIndex;
unsigned int mBlockAlign;
unsigned int mBlockSize;
unsigned int mBufferSize;
unsigned int mByteSize;
unsigned int mMaxUploadSize;
public:
BoneBuffer(int pipelineNbr = 1);
~BoneBuffer();
void Clear();
int UploadBones(const TArray<VSMatrix> &bones);
void Map() { mBuffer->Map(); }
void Unmap() { mBuffer->Unmap(); }
unsigned int GetBlockSize() const { return mBlockSize; }
bool GetBufferType() const { return mBufferType; }
int GetBinding(unsigned int index, size_t* pOffset, size_t* pSize);
// OpenGL needs the buffer to mess around with the binding.
IDataBuffer* GetBuffer() const
{
return mBuffer;
}
};