DirectX终极游戏开发指南引擎源码分析(一) RenderInterface.h解析——整体内容介绍

class CRenderInterface
{
public:
    CRenderInterface():m_nScreenWidth(0),m_nScreenHeight(0),
        m_fNear(0),m_fFar(0){}
    virtual ~CRenderInterface(){}

    virtual bool Initialize(int nWidth, int nHeight, WinHWND hMainHandle,
        bool bFullScreen, UGP_MS_TYPE ms) = 0;
    virtual void OneTimeInit() = 0;
    virtual void Shutdown() = 0;

    virtual void SetClearColor(float fR, float fG, float fB) = 0;
    virtual void StartRender(bool bColor, bool bDepth,
        bool bStencil) = 0;
    virtual void ClearBuffers(bool bColor, bool bDepth,
        bool bStencil) = 0;
    virtual void EndRendering() = 0;

    virtual void CalculateProjMatrix(float fov, float n,
        float f) = 0;
    virtual void CalculateOrthoMatrix(float n, float f) = 0;

    virtual int CreateStaticBuffer(VertexType, PrimType,
        int totalVerts, int totalIndices,
        int stride, void **data, unsigned int *indices,
        int *staticId) = 0;

    virtual int Render(int staticId) = 0;//2014.06.21 end Init D3D

    virtual void SetMaterial(stMaterial *mat) = 0;
    virtual void SetLight(stLight *light, int index) = 0;
    virtual void DisableLight(int index) = 0;//2014.06.22   end light and materal

    virtual void SetDepthTesting(RenderState state) = 0;
    virtual void SetTransparency(RenderState state,
        TransState src, TransState dst) = 0;

    virtual int AddTexture2D(char *file, int *texId) = 0;
    virtual void SetTextureFilter(int index, int filter,
        int val) = 0;
    virtual void SetMultiTexture() = 0;
    virtual void ApplyTexture(int index, int texId) = 0;
    virtual void SaveScreenShot(char *file) = 0;

    virtual void EnablePointSprites(float size, float min,
        float a, float b, float c) = 0;
    virtual void DisablePointSprites() = 0;//2014.06.23 end Texture

    virtual bool CreateText(char *font, int weight, bool italic,
        int size, int &id) = 0;
    virtual void DisplayText(int id, long x, long y,
        int r, int g, int b,
        char *text, ...) = 0;
    virtual void DisplayText(int id, long x, long y,
        unsigned long color,
        char *text, ...) = 0;
    // If porting to OpenGL would probably stay the same.
    virtual bool CreateGUI(int &id) = 0;

    virtual bool AddGUIBackdrop(int guiId,
        char *fileName) = 0;
    virtual bool AddGUIStaticText(int guiId, int id,
        char *text, int x, int y, unsigned long color,
        int fontID) = 0;
    virtual bool AddGUIButton(int guiId, int id, int x,
        int y, char *up, char *over, char *down) = 0;
    virtual void ProcessGUI(int guiID, bool LMBDown,
        int mouseX, int mouseY,
        void(*funcPtr)(int id, int state)) = 0;//2014.06.24 end GUI
    virtual void ReleaseAllGUIs() = 0;

    virtual void EnableFog(float start, float end,
        UGP_FOG_TYPE type, unsigned long color,
        bool rangeFog) = 0;
    virtual void DisableFog() = 0;
    virtual void SetDetailMapping() = 0;//2014.06.24 end  Special effects

    virtual int LoadXModel(char *file, int *xModelId) = 0;
    virtual int LoadXModel(char *file, int xModelId) = 0;

    virtual void ReleaseAllStaticBuffers() = 0;
    virtual void ReleaseAllXModels() = 0;
    virtual int ReleaseStaticBuffer(int staticID) = 0;
    virtual int ReleaseXModel(int xModelId) = 0;

    virtual int RenderStaticBuffer(int staticId) = 0;
    virtual int RenderXModel(int xModelId) = 0;

    virtual void GetXModelBoundingSphere(int xModelId,
        CVector3 *origin, float *radius) = 0;
    virtual void UpdateXAnimation(int xModelId,
        float time, CMatrix4x4 *mat) = 0;//2014.06.24 end X

    

    virtual void ApplyView(CVector3 pos, CVector3 view, CVector3 up) = 0;
    virtual void SetWorldMatrix(CMatrix4x4 *mat) = 0;

    virtual void CameraToViewMatrix(CCamera *cam, CMatrix4x4 *mat) = 0;
    virtual void GetProjectionMatrix(CMatrix4x4 *mat) = 0;//2014.06.24 end Camera


protected:
    int m_nScreenWidth;
    int m_nScreenHeight;
    bool m_bFullScreen;

    int m_nTotalFonts;

    //Loading界面
    CGUISystem *m_pGUIList;
    int m_nTotalGUIs;

    WinHWND m_hMainHandle;

    float m_fNear;
    float m_fFar;
};

上述源码为引擎接口(即基类),其实现的功能有:

1、初始化Direct3D。

2、Direct3D光照与材质。

3、纹理映射。

4、图形界面(UI)。

5、特效(粒子系统)。

6、Direct3D摄像机。

7、模型加载。

由于时间原因,笔者不再更新这块内容,书上讲的还是很详细的,有什么问题可以交流!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值