//*****************************************************************************
// d3dApp.h by Frank Luna (C) 2011 All Rights Reserved.
//
// Simple Direct3D demo application class.
// Make sure you link: d3d11.lib d3dx11d.lib D3DCompiler.lib D3DX11EffectsD.lib
// dxerr.lib dxgi.lib dxguid.lib.
// Link d3dx11.lib and D3DX11Effects.lib for release mode builds instead
// of d3dx11d.lib and D3DX11EffectsD.lib.
//*****************************************************************************
#ifndef D3DAPP_H
#define D3DAPP_H
#include "d3dUtil.h"
#include "GameTimer.h"
#include <string>
class D3DApp
{
public:
D3DApp(HINSTANCE hInstance);
virtual ~D3DApp();
HINSTANCE AppInst()const;
HWND MainWnd()const;
float AspectRatio()const;
int Run();
// Framework methods. Derived client class overrides these methods to
// implement specific application requirements.
virtual bool Init();
virtual void OnResize();
virtual void UpdateScene(float dt)=0;
virtual void DrawScene()=0;
virtual LRESULT MsgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
// Convenience overrides for handling mouse input.
virtual void OnMouseDown(WPARAM btnState, int x, int y){ }
virtual void OnMouseUp(WPARAM btnState, int x, int y) { }
virtual void OnMouseMove(WPARAM btnState, int x, int y){ }有人能解释一下为什么UpdateScene和DrawScene设置为0吗?这个语法是什么意思?
发布于 2013-07-30 05:02:49
这种语法意味着“纯虚拟函数”。通过将一个或多个函数声明为纯虚拟函数,可以使类抽象(不能实例化)。您打算在您的子实现中实现这些“纯虚拟”功能。但是,您可以在抽象类中拥有一个纯虚拟函数的主体,以防您想要从一个派生对象调用父版本。
发布于 2013-07-30 04:56:39
这些方法将由使用D3DApp作为基础的派生类来实现。如果它们未实现,则在派生类的实例过程中生成编译时错误。将这些方法的实现强制化基本上是一种设计选择。
https://stackoverflow.com/questions/17938565
复制相似问题