📄 mgcsoftrenderer.h
字号:
// Magic Software, Inc.
// http://www.magic-software.com
// Copyright (c) 2000, All Rights Reserved
//
// Source code from Magic Software is supplied under the terms of a license
// agreement and may not be copied or disclosed except in accordance with the
// terms of that agreement. The various license agreements may be found at
// the Magic Software web site. This file is subject to the license
//
// RESTRICTED USE SOURCE CODE
// http://www.magic-software.com/License/restricted.pdf
#ifndef MGCSOFTRENDERER_H
#define MGCSOFTRENDERER_H
#include <windows.h>
#include "MgcGPRenderer.h"
#include "MgcSoftColor.h"
#include "MgcSoftImage.h"
class MgcSoftRenderer : public MgcGPRenderer
{
MgcDeclareRTTI;
MgcDeclareStream;
public:
MgcSoftRenderer (HWND hWnd, int iWidth, int iHeight);
virtual ~MgcSoftRenderer ();
virtual void SetBackgroundColor (const MgcColor& rkColor);
virtual void ClearBackBuffer ();
virtual void DisplayBackBuffer ();
virtual void ClearZBuffer ();
virtual void ClearBuffers ();
protected:
MgcSoftRenderer ();
// rasterizer selection
int GetRasterizerIndex ();
// edge rasterizing
typedef void (MgcSoftRenderer::*ERasterizer)(unsigned int, unsigned int);
ERasterizer m_oERasterizer;
static ERasterizer ms_aoERasterizer[32];
virtual void RasterizeEdges ();
void DrawEdgeNULL (unsigned, unsigned);
void DrawEdgeC (unsigned uiV0, unsigned uiV1);
void DrawEdgeT (unsigned uiV0, unsigned uiV1);
void DrawEdgeTC (unsigned uiV0, unsigned uiV1);
void DrawEdgePT (unsigned uiV0, unsigned uiV1);
void DrawEdgePTC (unsigned uiV0, unsigned uiV1);
void DrawEdgeZC (unsigned uiV0, unsigned uiV1);
void DrawEdgeZT (unsigned uiV0, unsigned uiV1);
void DrawEdgeZTC (unsigned uiV0, unsigned uiV1);
void DrawEdgeZPT (unsigned uiV0, unsigned uiV1);
void DrawEdgeZPTC (unsigned uiV0, unsigned uiV1);
void DrawEdgeAC (unsigned uiV0, unsigned uiV1);
void DrawEdgeAT (unsigned uiV0, unsigned uiV1);
void DrawEdgeATC (unsigned uiV0, unsigned uiV1);
void DrawEdgeAPT (unsigned uiV0, unsigned uiV1);
void DrawEdgeAPTC (unsigned uiV0, unsigned uiV1);
void DrawEdgeAZC (unsigned uiV0, unsigned uiV1);
void DrawEdgeAZT (unsigned uiV0, unsigned uiV1);
void DrawEdgeAZTC (unsigned uiV0, unsigned uiV1);
void DrawEdgeAZPT (unsigned uiV0, unsigned uiV1);
void DrawEdgeAZPTC (unsigned uiV0, unsigned uiV1);
// triangle rasterizers
typedef void (MgcSoftRenderer::*TRasterizer)(unsigned int, unsigned int,
unsigned int);
TRasterizer m_oTRasterizer;
static TRasterizer ms_aoTRasterizer[32];
virtual void RasterizeTriangles ();
void DrawTriNULL (unsigned, unsigned, unsigned);
void DrawTriC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriPT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriPTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriZC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriZT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriZTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriZPT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriZPTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriATC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAPT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAPTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAZC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAZT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAZTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAZPT (unsigned uiV0, unsigned uiV1, unsigned uiV2);
void DrawTriAZPTC (unsigned uiV0, unsigned uiV1, unsigned uiV2);
// window parameters
HWND m_hWnd;
HDC m_hWindowDC, m_hMemoryDC;
HBITMAP m_hBufferBitmap;
MgcSoftColor* m_akBuffer;
MgcSoftColor m_kBackgroundSoftColor;
// current texture image
MgcSoftImage m_kImage;
// depth buffer
unsigned short* m_ausZBuffer;
};
MgcSmartPointer(MgcSoftRenderer);
MgcRegisterStream(MgcSoftRenderer);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -