TRX/lib/ati3dcif/VertexStream.hpp

50 lines
1.2 KiB
C++
Raw Normal View History

2021-11-12 20:03:04 +01:00
#pragma once
2021-11-14 23:44:55 +01:00
#include <ati3dcif/ATI3DCIF.h>
2021-11-12 20:03:04 +01:00
#include "TransDelay.hpp"
#include <glrage_gl/Buffer.hpp>
2021-11-14 23:59:19 +01:00
#include <glrage_gl/VertexArray.hpp>
2021-11-12 20:03:04 +01:00
#include <vector>
namespace glrage {
namespace cif {
static const GLenum GLCIF_PRIM_MODES[] = {
GL_LINES, // C3D_EPRIM_LINE
GL_TRIANGLES, // C3D_EPRIM_TRI
GL_TRIANGLES, // C3D_EPRIM_QUAD
GL_TRIANGLES, // C3D_EPRIM_RECT
GL_POINTS // C3D_EPRIM_POINT
};
class VertexStream
{
public:
VertexStream();
void addPrimStrip(C3D_VSTRIP vertStrip, C3D_UINT32 numVert);
void addPrimList(C3D_VLIST vertList, C3D_UINT32 numVert);
void renderPending();
C3D_EVERTEX vertexType();
void vertexType(C3D_EVERTEX vertexType);
C3D_EPRIM primType();
void primType(C3D_EPRIM primType);
void bind();
void renderPrims(std::vector<C3D_VTCF> prims);
2021-11-14 23:59:19 +01:00
void setDelayer(std::function<BOOL(C3D_VTCF*)> delayer);
2021-11-12 20:03:04 +01:00
private:
2021-11-15 19:06:58 +01:00
C3D_EVERTEX m_vertexType = C3D_EV_VTCF;
C3D_EPRIM m_primType = C3D_EPRIM_TRI;
2021-11-12 20:03:04 +01:00
size_t m_vertexBufferSize = 0;
gl::Buffer m_vertexBuffer;
gl::VertexArray m_vtcFormat;
std::vector<C3D_VTCF> m_vtcBuffer;
2021-11-14 23:59:19 +01:00
std::function<BOOL(C3D_VTCF*)> m_delayer;
2021-11-12 20:03:04 +01:00
};
} // namespace cif
} // namespace glrage