例程初步定义了渲染器类,并模拟了Clear操作。
Renderer类:
class SoftRenderer
{
public:
SoftRenderer(HWND hWnd, int w, int h);
~SoftRenderer();
virtual void
Resize(int width, int height);
virtual void
Clear(const Float3 & color = Float3(0, 0, 0), float depth = 1.0f);
virtual void
Begin();
virtual void
End();
virtual void
Present();
protected:
SoftRendererContext * mContext;
int mWidth, mHeight;
Float3 * mColorBuffer;
float * mDepthBuffer;
};
主要接口:
Resize 当窗口大小改变时,需要改变渲染器内部Buffer的大小
Clear 清屏操作
Begin 渲染开始,(渲染开始时,渲染器可能需要一些初始化操作)
End 渲染结束
Present 渲染完成后,需要提交给窗口
App类:
class MyApp : public App
{
SoftRenderer * mRenderer;
public:
MyApp()
{
}
virtual ~MyApp()
{
}
virtual void OnInit(int w, int h)
{
mRenderer = new SoftRenderer(mWnd, w, h);
}
virtual void OnUpdate()
{
// 开始渲染
mRenderer->Begin();
// 清屏
mRenderer->Clear(Float3(1, 0, 0), 1);
// 渲染结束
mRenderer->End();
// 提交
mRenderer->Present();
}
virtual void OnShutdown()
{
delete mRenderer;
}
virtual void OnResize(int w, int h)
{
}
};
注意: 不用在意Context,它只是一个内部类,用于模拟OpenGL Context的操作。
浙公网安备 33010602011771号