#pragma once #include #include "Framework.h" #include "Vector3D.h" #include "Vertex.h" #include "Matrix.h" #include "SharedTools.h" #include "Camera.h" #include "Model.h" #include "MD2Loader.h" #include "Light.h" #include "AmbientLight.h" #include "DirectionalLight.h" #include "PointLight.h" using namespace std; using namespace SharedTools; class Rasteriser : public Framework { public: bool Initialise(); void Update(const Bitmap& bitmap); void Render(const Bitmap& bitmap); void ClearViewport(const Bitmap& bitmap); void SetCurrentCamera(int index); Camera& GetCamera(int index); Camera& GetCurrentCamera(); void CalculateLighting(Model& currentModel, bool fullLightRender); void DrawSquare(HDC hDc, const vector verticies); void DrawShape(HDC hDc, const vector verticies); void DrawWireFrame(HDC hDc, Model& model); void DrawSolidFlat(HDC hDc, Model& model); void DrawRasterisedSolidFlat(HDC hDc, Model& model); void DrawGouraud(HDC hDc, Model& model); void FillPolygonFlat(HDC hDc, vector& verticies, COLORREF colorIn); void FillFlatSideTriangle(HDC hDc, const Vertex& v1, const Vertex& v2, const Vertex& v3, COLORREF colorIn); void FillPolygonGouraud(HDC hDc, vector& verticies); void FillGouraudTopFlatTriangle(HDC hDc, const Vertex& v1, const Vertex& v2, const Vertex& v3); void FillGouraudBottomFlatTriangle(HDC hDc, const Vertex& v1, const Vertex& v2, const Vertex& v3); void FillPolygonGouraudInt(HDC hDc, vector& verticies); void FillGouraudSideTriangle(HDC hDc, const Vertex& v1, const Vertex& v2, const Vertex& v3); private: vector _sceneModels; vector _lights; vector _cameras; int _currentCamera = 0; Matrix _currentPerspectiveMatrix; Matrix _currentViewMatrix; float _currentAspectRatio = 0.0f; int _rotation = 0; bool _screenMinimized = false; };