80 lines
2.2 KiB
C++
80 lines
2.2 KiB
C++
/*
|
|
gl_primitive.h - render primitives
|
|
this code written for Paranoia 2: Savior modification
|
|
Copyright (C) 2013 Uncle Mike
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
*/
|
|
|
|
#ifndef GL_PRIMITIVE_H
|
|
#define GL_PRIMITIVE_H
|
|
|
|
#define DRAWTYPE_UNKNOWN 0
|
|
#define DRAWTYPE_SURFACE 1
|
|
#define DRAWTYPE_MESH 2
|
|
#define DRAWTYPE_QUAD 3
|
|
|
|
//#pragma pack(1)
|
|
|
|
class CSolidEntry
|
|
{
|
|
public:
|
|
void SetRenderPrimitive( const Vector verts[4], const Vector4D &color, int texture, int rendermode );
|
|
void SetRenderSurface( msurface_t *surface, word hProgram );
|
|
void SetRenderMesh( struct vbomesh_s *mesh, word hProgram );
|
|
virtual bool IsTranslucent( void ) { return false; }
|
|
int GetType( void ) { return m_bDrawType; }
|
|
|
|
byte m_bDrawType; // type of entry
|
|
|
|
union
|
|
{
|
|
cl_entity_t *m_pParentEntity; // pointer to parent entity
|
|
int m_iRenderMode; // rendermode for primitive
|
|
};
|
|
|
|
union
|
|
{
|
|
model_t *m_pRenderModel; // render model
|
|
int m_iStartVertex; // offset in global heap
|
|
};
|
|
|
|
union
|
|
{
|
|
unsigned short m_hProgram; // handle to glsl program (may be 0)
|
|
unsigned short m_hTexture; // texture for primitive
|
|
};
|
|
|
|
union
|
|
{
|
|
struct vbomesh_s *m_pMesh; // NULL or mesh
|
|
msurface_t *m_pSurf; // NULL or surface
|
|
int m_iColor; // primitive color
|
|
};
|
|
};
|
|
|
|
class CTransEntry : public CSolidEntry
|
|
{
|
|
public:
|
|
void ComputeViewDistance( const Vector &absmin, const Vector &absmax );
|
|
void ComputeScissor( const Vector &absmin, const Vector &absmax );
|
|
virtual bool IsTranslucent( void ) { return true; }
|
|
void RequestScreenColor( void );
|
|
void RequestScreenDepth( void );
|
|
void RenderScissorDebug( void );
|
|
|
|
float m_flViewDist;
|
|
Vector4D m_vecRect;
|
|
bool m_bScissorReady : 1;
|
|
};
|
|
//#pragma pack()
|
|
|
|
#endif//GL_PRIMITIVE_H
|