You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
3.4 KiB
78 lines
3.4 KiB
/*==========================================================================;
|
|
*
|
|
* Copyright (C) 1997 Microsoft Corporation. All Rights Reserved.
|
|
*
|
|
* File: clipfunc.h
|
|
* Content: Clipper functions
|
|
*
|
|
***************************************************************************/
|
|
|
|
#ifndef _CLIPFUNC_H_
|
|
#define _CLIPFUNC_H_
|
|
|
|
#include "clipper.h"
|
|
|
|
int ClipSingleLine(D3DFE_PROCESSVERTICES *pv,
|
|
ClipTriangle *line,
|
|
D3DRECTV *extent);
|
|
|
|
HRESULT ProcessClippedPoints(D3DFE_PROCESSVERTICES*);
|
|
HRESULT ProcessClippedTriangleList (D3DFE_PROCESSVERTICES*);
|
|
HRESULT ProcessClippedTriangleStrip(D3DFE_PROCESSVERTICES *pv);
|
|
HRESULT ProcessClippedTriangleFan (D3DFE_PROCESSVERTICES *pv);
|
|
HRESULT ProcessClippedLine(D3DFE_PROCESSVERTICES *pv);
|
|
HRESULT ProcessClippedIndexedTriangleStrip(D3DFE_PROCESSVERTICES *pv);
|
|
HRESULT ProcessClippedIndexedTriangleFan (D3DFE_PROCESSVERTICES *pv);
|
|
HRESULT ProcessClippedIndexedTriangleList (D3DFE_PROCESSVERTICES *pv);
|
|
HRESULT ProcessClippedIndexedLine(D3DFE_PROCESSVERTICES *pv);
|
|
DWORD D3DFE_GenClipFlags(D3DFE_PROCESSVERTICES *pv);
|
|
|
|
//---------------------------------------------------------------------
|
|
// This function is called by the clipper to draw unclipped part of a primitive
|
|
//
|
|
inline HRESULT DRAW_PRIM(D3DFE_PROCESSVERTICES *pv,
|
|
D3DPRIMITIVETYPE primitiveType,
|
|
LPVOID startVertex, DWORD vertexCount, DWORD numPrim)
|
|
{
|
|
pv->lpvOut = startVertex;
|
|
pv->primType = primitiveType;
|
|
pv->dwNumVertices = vertexCount;
|
|
pv->dwNumPrimitives = numPrim;
|
|
return pv->DrawPrim();
|
|
}
|
|
//---------------------------------------------------------------------
|
|
// This function is called by the clipper to draw clipped part of a primitive
|
|
//
|
|
inline HRESULT DRAW_CLIPPED_PRIM(D3DFE_PROCESSVERTICES *pv,
|
|
D3DPRIMITIVETYPE primitiveType,
|
|
LPVOID startVertex, DWORD vertexCount, DWORD numPrim)
|
|
{
|
|
pv->lpvOut = startVertex;
|
|
pv->primType = primitiveType;
|
|
pv->dwNumVertices = vertexCount;
|
|
pv->dwNumPrimitives = numPrim;
|
|
return pv->DrawClippedPrim();
|
|
}
|
|
//---------------------------------------------------------------------
|
|
// This function is called by the clipper to draw unclipped part of an
|
|
// indexed primitive
|
|
//
|
|
inline HRESULT DRAW_INDEX_PRIM(D3DFE_PROCESSVERTICES *pv,
|
|
D3DPRIMITIVETYPE primitiveType,
|
|
LPWORD startIndex, DWORD vertexCount, DWORD numPrim)
|
|
{
|
|
pv->lpwIndices = startIndex;
|
|
pv->primType = primitiveType;
|
|
pv->dwNumIndices = vertexCount;
|
|
pv->dwNumPrimitives = numPrim;
|
|
return pv->DrawIndexPrim();
|
|
}
|
|
//----------------------------------------------------------------------
|
|
// Clip a triangle made by 3 vertices
|
|
// bCanModifyVertices is set to TRUE, if the function can modify the original
|
|
// vertices
|
|
//
|
|
HRESULT Clip(D3DFE_PROCESSVERTICES *pv, ClipVertex *cv1, ClipVertex *cv2, ClipVertex *cv3);
|
|
HRESULT ClipLine(D3DFE_PROCESSVERTICES *pv, ClipVertex *cv1, ClipVertex *cv2);
|
|
|
|
#endif // _CLIPFUNC_H_
|