windows-nt/Source/XPSP1/NT/multimedia/directx/dxg/d3d8/inc/pipeln.h
2020-09-26 16:20:57 +08:00

52 lines
1.9 KiB
C

#ifndef __PIPELN_H_
#define __PIPELN_H_
/*==========================================================================;
*
* Copyright (C) 1999 Microsoft Corporation. All Rights Reserved.
*
* File: pipeln.h
* Content: Common definitions between Microsoft PSGP and the front-end
*
***************************************************************************/
//-----------------------------------------------------------------------------
// Prototype of a function to copy data from input vertex stream to an input
// register
typedef void (*PFN_D3DCOPYELEMENT)(LPVOID pInputStream,
UINT InputStreamStride,
UINT count,
VVM_WORD * pVertexRegister);
//---------------------------------------------------------------------
inline void ComputeOutputVertexOffsets(LPD3DFE_PROCESSVERTICES pv)
{
DWORD i = 4*sizeof(D3DVALUE);
pv->pointSizeOffsetOut = i;
if (pv->dwVIDOut & D3DFVF_PSIZE)
i += sizeof(DWORD);
pv->diffuseOffsetOut = i;
if (pv->dwVIDOut & D3DFVF_DIFFUSE)
i += sizeof(DWORD);
pv->specularOffsetOut = i;
if (pv->dwVIDOut & D3DFVF_SPECULAR)
i += sizeof(DWORD);
pv->fogOffsetOut = i;
if (pv->dwVIDOut & D3DFVF_FOG)
i += sizeof(DWORD);
pv->texOffsetOut = i;
}
//----------------------------------------------------------------------
inline DWORD MakeTexTransformFuncIndex(DWORD dwNumInpTexCoord, DWORD dwNumOutTexCoord)
{
DDASSERT(dwNumInpTexCoord <= 4 && dwNumOutTexCoord <= 4);
return (dwNumInpTexCoord - 1) + ((dwNumOutTexCoord - 1) << 2);
}
//----------------------------------------------------------------------
// Returns TRUE if the token is instruction token, FALSE if the token is
// an operand token
inline BOOL IsInstructionToken(DWORD token)
{
return (token & 0x80000000) == 0;
}
#endif // __PIPELN_H_