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
|