Replaced OpenGL namespace with static class

Fixed OpenGL functions not being exported
It is also more consistent


Former-commit-id: 3eddcb6f72412443eb56580180d0b9544ae4a9df
This commit is contained in:
Lynix 2012-12-13 15:47:29 +01:00
parent 73fdb9baaf
commit 68c6aa664a
2 changed files with 803 additions and 805 deletions

View File

@ -43,8 +43,9 @@ enum nzOpenGLExtension
using NzOpenGLFunc = void (*)();
namespace NzOpenGL
class NAZARA_API NzOpenGL
{
public:
enum FormatType
{
FormatType_RenderBuffer,
@ -59,36 +60,36 @@ namespace NzOpenGL
GLint internalFormat;
};
NzOpenGLFunc GetEntry(const NzString& entryPoint);
unsigned int GetVersion();
bool Initialize();
bool IsSupported(nzOpenGLExtension extension);
bool IsSupported(const NzString& string);
bool TranslateFormat(nzPixelFormat pixelFormat, Format* format, FormatType target);
void Uninitialize();
static NzOpenGLFunc GetEntry(const NzString& entryPoint);
static unsigned int GetVersion();
static bool Initialize();
static bool IsSupported(nzOpenGLExtension extension);
static bool IsSupported(const NzString& string);
static bool TranslateFormat(nzPixelFormat pixelFormat, Format* format, FormatType target);
static void Uninitialize();
extern GLenum Attachment[nzAttachmentPoint_Max+1];
extern nzUInt8 AttributeIndex[nzElementUsage_Max+1];
extern GLenum BlendFunc[nzBlendFunc_Max+1];
extern GLenum BufferLock[nzBufferAccess_Max+1];
extern GLenum BufferLockRange[nzBufferAccess_Max+1];
extern GLenum BufferTarget[nzBufferType_Max+1];
extern GLenum BufferTargetBinding[nzBufferType_Max+1];
extern GLenum BufferUsage[nzBufferUsage_Max+1];
extern GLenum CubemapFace[6]; // Un cube possède six faces et ça n'est pas prêt de changer
extern GLenum ElementType[nzElementType_Max+1];
extern GLenum FaceCulling[nzFaceCulling_Max+1];
extern GLenum FaceFilling[nzFaceFilling_Max+1];
extern GLenum PrimitiveType[nzPrimitiveType_Max+1];
extern GLenum RendererComparison[nzRendererComparison_Max+1];
extern GLenum RendererParameter[nzRendererParameter_Max+1];
extern GLenum ShaderType[nzShaderType_Max+1];
extern GLenum StencilOperation[nzStencilOperation_Max+1];
extern GLenum TextureTarget[nzImageType_Max+1];
extern GLenum TextureTargetBinding[nzImageType_Max+1];
extern GLenum TextureTargetProxy[nzImageType_Max+1];
extern GLenum TextureWrapMode[nzTextureWrap_Max+1];
}
static GLenum Attachment[nzAttachmentPoint_Max+1];
static nzUInt8 AttributeIndex[nzElementUsage_Max+1];
static GLenum BlendFunc[nzBlendFunc_Max+1];
static GLenum BufferLock[nzBufferAccess_Max+1];
static GLenum BufferLockRange[nzBufferAccess_Max+1];
static GLenum BufferTarget[nzBufferType_Max+1];
static GLenum BufferTargetBinding[nzBufferType_Max+1];
static GLenum BufferUsage[nzBufferUsage_Max+1];
static GLenum CubemapFace[6]; // Un cube possède six faces et ça n'est pas prêt de changer
static GLenum ElementType[nzElementType_Max+1];
static GLenum FaceCulling[nzFaceCulling_Max+1];
static GLenum FaceFilling[nzFaceFilling_Max+1];
static GLenum PrimitiveType[nzPrimitiveType_Max+1];
static GLenum RendererComparison[nzRendererComparison_Max+1];
static GLenum RendererParameter[nzRendererParameter_Max+1];
static GLenum ShaderType[nzShaderType_Max+1];
static GLenum StencilOperation[nzStencilOperation_Max+1];
static GLenum TextureTarget[nzImageType_Max+1];
static GLenum TextureTargetBinding[nzImageType_Max+1];
static GLenum TextureTargetProxy[nzImageType_Max+1];
static GLenum TextureWrapMode[nzTextureWrap_Max+1];
};
NAZARA_API extern PFNGLACTIVETEXTUREPROC glActiveTexture;
NAZARA_API extern PFNGLATTACHSHADERPROC glAttachShader;

View File

@ -106,19 +106,17 @@ namespace
}
}
namespace NzOpenGL
{
NzOpenGLFunc GetEntry(const NzString& entryPoint)
NzOpenGLFunc NzOpenGL::GetEntry(const NzString& entryPoint)
{
return LoadEntry(entryPoint.GetConstBuffer(), false);
}
unsigned int GetVersion()
unsigned int NzOpenGL::GetVersion()
{
return openGLversion;
}
bool Initialize()
bool NzOpenGL::Initialize()
{
if (!LoadLibrary())
{
@ -556,17 +554,17 @@ namespace NzOpenGL
return true;
}
bool IsSupported(nzOpenGLExtension extension)
bool NzOpenGL::IsSupported(nzOpenGLExtension extension)
{
return openGLextensions[extension];
}
bool IsSupported(const NzString& string)
bool NzOpenGL::IsSupported(const NzString& string)
{
return openGLextensionSet.find(string) != openGLextensionSet.end();
}
bool TranslateFormat(nzPixelFormat pixelFormat, Format* format, FormatType type)
bool NzOpenGL::TranslateFormat(nzPixelFormat pixelFormat, Format* format, FormatType type)
{
switch (pixelFormat)
{
@ -704,7 +702,7 @@ namespace NzOpenGL
return false;
}
void Uninitialize()
void NzOpenGL::Uninitialize()
{
NzContext::Uninitialize();
@ -717,7 +715,7 @@ namespace NzOpenGL
UnloadLibrary();
}
GLenum Attachment[nzAttachmentPoint_Max+1] =
GLenum NzOpenGL::Attachment[nzAttachmentPoint_Max+1] =
{
GL_COLOR_ATTACHMENT0, // nzAttachmentPoint_Color
GL_DEPTH_ATTACHMENT, // nzAttachmentPoint_Depth
@ -725,7 +723,7 @@ namespace NzOpenGL
GL_STENCIL_ATTACHMENT // nzAttachmentPoint_Stencil
};
nzUInt8 AttributeIndex[nzElementUsage_Max+1] =
nzUInt8 NzOpenGL::AttributeIndex[nzElementUsage_Max+1] =
{
2, // nzElementUsage_Diffuse
1, // nzElementUsage_Normal
@ -735,7 +733,7 @@ namespace NzOpenGL
4 // nzElementUsage_TexCoord (Doit être le dernier de la liste car extensible)
};
GLenum BlendFunc[nzBlendFunc_Max+1] =
GLenum NzOpenGL::BlendFunc[nzBlendFunc_Max+1] =
{
GL_DST_ALPHA, // nzBlendFunc_DestAlpha
GL_DST_COLOR, // nzBlendFunc_DestColor
@ -749,7 +747,7 @@ namespace NzOpenGL
GL_ZERO // nzBlendFunc_Zero
};
GLenum BufferLock[nzBufferAccess_Max+1] =
GLenum NzOpenGL::BufferLock[nzBufferAccess_Max+1] =
{
GL_WRITE_ONLY, // nzBufferAccess_DiscardAndWrite
GL_READ_ONLY, // nzBufferAccess_ReadOnly
@ -757,7 +755,7 @@ namespace NzOpenGL
GL_WRITE_ONLY // nzBufferAccess_WriteOnly
};
GLenum BufferLockRange[nzBufferAccess_Max+1] =
GLenum NzOpenGL::BufferLockRange[nzBufferAccess_Max+1] =
{
GL_MAP_INVALIDATE_BUFFER_BIT | GL_MAP_WRITE_BIT, // nzBufferAccess_DiscardAndWrite
GL_MAP_READ_BIT, // nzBufferAccess_ReadOnly
@ -765,19 +763,19 @@ namespace NzOpenGL
GL_MAP_WRITE_BIT // nzBufferAccess_WriteOnly
};
GLenum BufferTarget[nzBufferType_Max+1] =
GLenum NzOpenGL::BufferTarget[nzBufferType_Max+1] =
{
GL_ELEMENT_ARRAY_BUFFER, // nzBufferType_Index,
GL_ARRAY_BUFFER, // nzBufferType_Vertex
};
GLenum BufferTargetBinding[nzBufferType_Max+1] =
GLenum NzOpenGL::BufferTargetBinding[nzBufferType_Max+1] =
{
GL_ELEMENT_ARRAY_BUFFER_BINDING, // nzBufferType_Index,
GL_ARRAY_BUFFER_BINDING, // nzBufferType_Vertex
};
GLenum BufferUsage[nzBufferUsage_Max+1] =
GLenum NzOpenGL::BufferUsage[nzBufferUsage_Max+1] =
{
// J'ai choisi DYNAMIC à la place de STREAM car DYNAMIC semble plus adapté au profil "une mise à jour pour quelques rendus"
// Ce qui est je pense le scénario qui arrivera le plus souvent (Prévoir une option pour permettre d'utiliser le STREAM_DRAW ?)
@ -786,7 +784,7 @@ namespace NzOpenGL
GL_STATIC_DRAW // nzBufferUsage_Static
};
GLenum CubemapFace[6] =
GLenum NzOpenGL::CubemapFace[6] =
{
GL_TEXTURE_CUBE_MAP_POSITIVE_X, // nzCubemapFace_PositiveX
GL_TEXTURE_CUBE_MAP_NEGATIVE_X, // nzCubemapFace_NegativeX
@ -796,7 +794,7 @@ namespace NzOpenGL
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z // nzCubemapFace_NegativeZ
};
GLenum ElementType[nzElementType_Max+1] =
GLenum NzOpenGL::ElementType[nzElementType_Max+1] =
{
GL_UNSIGNED_BYTE, // nzElementType_Color
GL_DOUBLE, // nzElementType_Double1
@ -809,21 +807,21 @@ namespace NzOpenGL
GL_FLOAT // nzElementType_Float4
};
GLenum FaceCulling[nzFaceCulling_Max+1] =
GLenum NzOpenGL::FaceCulling[nzFaceCulling_Max+1] =
{
GL_BACK, // nzFaceCulling_Back
GL_FRONT, // nzFaceCulling_Front
GL_FRONT_AND_BACK // nzFaceCulling_FrontAndBack
};
GLenum FaceFilling[nzFaceFilling_Max+1] =
GLenum NzOpenGL::FaceFilling[nzFaceFilling_Max+1] =
{
GL_POINT, // nzFaceFilling_Point
GL_LINE, // nzFaceFilling_Line
GL_FILL // nzFaceFilling_Fill
};
GLenum PrimitiveType[nzPrimitiveType_Max+1] =
GLenum NzOpenGL::PrimitiveType[nzPrimitiveType_Max+1] =
{
GL_LINES, // nzPrimitiveType_LineList,
GL_LINE_STRIP, // nzPrimitiveType_LineStrip,
@ -833,7 +831,7 @@ namespace NzOpenGL
GL_TRIANGLE_FAN // nzPrimitiveType_TriangleFan
};
GLenum RendererComparison[nzRendererComparison_Max+1] =
GLenum NzOpenGL::RendererComparison[nzRendererComparison_Max+1] =
{
GL_ALWAYS, // nzRendererComparison_Always
GL_EQUAL, // nzRendererComparison_Equal
@ -844,7 +842,7 @@ namespace NzOpenGL
GL_NEVER // nzRendererComparison_Never
};
GLenum RendererParameter[nzRendererParameter_Max+1] =
GLenum NzOpenGL::RendererParameter[nzRendererParameter_Max+1] =
{
GL_BLEND, // nzRendererParameter_Blend
GL_NONE, // nzRendererParameter_ColorWrite
@ -854,14 +852,14 @@ namespace NzOpenGL
GL_STENCIL_TEST // nzRendererParameter_Stencil
};
GLenum ShaderType[nzShaderType_Max+1] =
GLenum NzOpenGL::ShaderType[nzShaderType_Max+1] =
{
GL_FRAGMENT_SHADER, // nzShaderType_Fragment
GL_GEOMETRY_SHADER, // nzShaderType_Geometry
GL_VERTEX_SHADER // nzShaderType_Vertex
};
GLenum StencilOperation[nzStencilOperation_Max+1] =
GLenum NzOpenGL::StencilOperation[nzStencilOperation_Max+1] =
{
GL_DECR, // nzStencilOperation_Decrement
GL_DECR_WRAP, // nzStencilOperation_DecrementToSaturation
@ -873,7 +871,7 @@ namespace NzOpenGL
GL_ZERO // nzStencilOperation_Zero
};
GLenum TextureTarget[nzImageType_Max+1] =
GLenum NzOpenGL::TextureTarget[nzImageType_Max+1] =
{
GL_TEXTURE_1D, // nzImageType_1D
GL_TEXTURE_1D_ARRAY, // nzImageType_1D_Array
@ -883,7 +881,7 @@ namespace NzOpenGL
GL_TEXTURE_CUBE_MAP // nzImageType_Cubemap
};
GLenum TextureTargetBinding[nzImageType_Max+1] =
GLenum NzOpenGL::TextureTargetBinding[nzImageType_Max+1] =
{
GL_TEXTURE_BINDING_1D, // nzImageType_1D
GL_TEXTURE_BINDING_1D_ARRAY, // nzImageType_1D_Array
@ -893,7 +891,7 @@ namespace NzOpenGL
GL_TEXTURE_BINDING_CUBE_MAP // nzImageType_Cubemap
};
GLenum TextureTargetProxy[nzImageType_Max+1] =
GLenum NzOpenGL::TextureTargetProxy[nzImageType_Max+1] =
{
GL_PROXY_TEXTURE_1D, // nzImageType_1D
GL_PROXY_TEXTURE_1D_ARRAY, // nzImageType_1D_Array
@ -903,12 +901,11 @@ namespace NzOpenGL
GL_PROXY_TEXTURE_CUBE_MAP // nzImageType_Cubemap
};
GLenum TextureWrapMode[nzTextureWrap_Max+1] =
GLenum NzOpenGL::TextureWrapMode[nzTextureWrap_Max+1] =
{
GL_CLAMP_TO_EDGE, // nzTextureWrap_Clamp
GL_REPEAT // nzTextureWrap_Repeat
};
}
PFNGLACTIVETEXTUREPROC glActiveTexture = nullptr;
PFNGLATTACHSHADERPROC glAttachShader = nullptr;