Added pixel format support Added MemoryStream Added Rect Added ResourceLoader Added generic loader (bmp, gif, hdr, jpg, jpeg, pic, png, psd, tga) Added PCX loader Added utility module initializer Fixed Config.hpp include Prerequesites.hpp now overwrites _WIN32_WINNT when defined version is less than requiered version Renderer's initialisation will implicitly initialize utility module Removed RENDERER_SINGLETON option Shaders are now resources
103 lines
2.5 KiB
C++
103 lines
2.5 KiB
C++
// Copyright (C) 2012 Jérôme Leclercq
|
|
// This file is part of the "Nazara Engine".
|
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
|
|
|
#pragma once
|
|
|
|
#ifndef NAZARA_RENDERER_HPP
|
|
#define NAZARA_RENDERER_HPP
|
|
|
|
#include <Nazara/Prerequesites.hpp>
|
|
|
|
#define NazaraRenderer NzRenderer::Instance()
|
|
|
|
enum nzPrimitiveType
|
|
{
|
|
nzPrimitiveType_LineList,
|
|
nzPrimitiveType_LineStrip,
|
|
nzPrimitiveType_PointList,
|
|
nzPrimitiveType_TriangleList,
|
|
nzPrimitiveType_TriangleStrip,
|
|
nzPrimitiveType_TriangleFan
|
|
};
|
|
|
|
enum nzRendererCap
|
|
{
|
|
nzRendererCap_AnisotropicFilter,
|
|
nzRendererCap_FP64,
|
|
nzRendererCap_HardwareBuffer,
|
|
nzRendererCap_MultipleRenderTargets,
|
|
nzRendererCap_OcclusionQuery,
|
|
nzRendererCap_SoftwareBuffer,
|
|
nzRendererCap_Texture3D,
|
|
nzRendererCap_TextureCubemap,
|
|
nzRendererCap_TextureMulti,
|
|
nzRendererCap_TextureNPOT,
|
|
|
|
nzRendererCap_Count
|
|
};
|
|
|
|
enum nzRendererClear
|
|
{
|
|
nzRendererClear_Color = 0x01,
|
|
nzRendererClear_Depth = 0x02,
|
|
nzRendererClear_Stencil = 0x04
|
|
};
|
|
|
|
class NzIndexBuffer;
|
|
class NzRenderTarget;
|
|
class NzShader;
|
|
class NzUtility;
|
|
class NzVertexBuffer;
|
|
class NzVertexDeclaration;
|
|
|
|
class NAZARA_API NzRenderer
|
|
{
|
|
public:
|
|
NzRenderer();
|
|
~NzRenderer();
|
|
|
|
void Clear(nzRendererClear flags);
|
|
|
|
void DrawIndexedPrimitives(nzPrimitiveType primitive, unsigned int firstIndex, unsigned int indexCount);
|
|
void DrawPrimitives(nzPrimitiveType primitive, unsigned int firstVertex, unsigned int vertexCount);
|
|
|
|
unsigned int GetMaxTextureUnits() const;
|
|
NzShader* GetShader() const;
|
|
NzRenderTarget* GetTarget() const;
|
|
|
|
bool HasCapability(nzRendererCap capability) const;
|
|
bool Initialize();
|
|
|
|
void SetClearColor(nzUInt8 r, nzUInt8 g, nzUInt8 b, nzUInt8 a = 255);
|
|
void SetClearDepth(double depth);
|
|
void SetClearStencil(unsigned int value);
|
|
bool SetIndexBuffer(const NzIndexBuffer* indexBuffer);
|
|
bool SetShader(NzShader* shader);
|
|
bool SetTarget(NzRenderTarget* target);
|
|
bool SetVertexBuffer(const NzVertexBuffer* vertexBuffer);
|
|
bool SetVertexDeclaration(const NzVertexDeclaration* vertexDeclaration);
|
|
|
|
void Uninitialize();
|
|
|
|
static NzRenderer* Instance();
|
|
static bool IsInitialized();
|
|
|
|
private:
|
|
bool UpdateVertexBuffer();
|
|
|
|
const NzIndexBuffer* m_indexBuffer;
|
|
NzRenderTarget* m_target;
|
|
NzShader* m_shader;
|
|
NzUtility* m_utilityModule;
|
|
const NzVertexBuffer* m_vertexBuffer;
|
|
const NzVertexDeclaration* m_vertexDeclaration;
|
|
bool m_capabilities[nzRendererCap_Count];
|
|
bool m_vertexBufferUpdated;
|
|
|
|
static NzRenderer* s_instance;
|
|
static bool s_initialized;
|
|
};
|
|
|
|
#endif // NAZARA_RENDERER_HPP
|