Fixed OpenGL 4 not loading sampler objets
Also fixed file encoding Former-commit-id: 51683c2d9dff8a56c96ad972c8b6d6006004f1f2
This commit is contained in:
parent
dc3af6ae69
commit
119a1420d1
|
|
@ -1,4 +1,4 @@
|
||||||
// Copyright (C) 2012 Jérôme Leclercq
|
// Copyright (C) 2012 Jérôme Leclercq
|
||||||
// This file is part of the "Nazara Engine - Renderer module"
|
// This file is part of the "Nazara Engine - Renderer module"
|
||||||
// For conditions of distribution and use, see copyright notice in Config.hpp
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
|
@ -69,7 +69,7 @@ namespace
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// On peut sûrement faire plus rapide mais comme ça ne se fait qu'une fois et que NzString implémente le COW...
|
// On peut sûrement faire plus rapide mais comme ça ne se fait qu'une fois et que NzString implémente le COW...
|
||||||
std::vector<NzString> ext;
|
std::vector<NzString> ext;
|
||||||
extensionString.Split(ext);
|
extensionString.Split(ext);
|
||||||
|
|
||||||
|
|
@ -126,18 +126,18 @@ namespace NzOpenGL
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Le chargement des fonctions OpenGL nécessite un contexte OpenGL
|
// Le chargement des fonctions OpenGL nécessite un contexte OpenGL
|
||||||
NzContextParameters parameters;
|
NzContextParameters parameters;
|
||||||
parameters.majorVersion = 2;
|
parameters.majorVersion = 2;
|
||||||
parameters.minorVersion = 0;
|
parameters.minorVersion = 0;
|
||||||
parameters.shared = false;
|
parameters.shared = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Note: Même le contexte de chargement nécessite quelques fonctions de base pour correctement s'initialiser
|
Note: Même le contexte de chargement nécessite quelques fonctions de base pour correctement s'initialiser
|
||||||
Pour cette raison, deux contextes sont créés, le premier sert à récupérer les fonctions permetttant
|
Pour cette raison, deux contextes sont créés, le premier sert à récupérer les fonctions permetttant
|
||||||
de créer le second avec les bons paramètres.
|
de créer le second avec les bons paramètres.
|
||||||
|
|
||||||
Non sérieusement si quelqu'un a une meilleure idée qu'il me le dise.
|
Non sérieusement si vous avez une meilleure idée contactez-moi
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/****************************************Initialisation****************************************/
|
/****************************************Initialisation****************************************/
|
||||||
|
|
@ -160,9 +160,9 @@ namespace NzOpenGL
|
||||||
glXCreateContextAttribs = reinterpret_cast<PFNGLXCREATECONTEXTATTRIBSARBPROC>(LoadEntry("glXCreateContextAttribsARB", false));
|
glXCreateContextAttribs = reinterpret_cast<PFNGLXCREATECONTEXTATTRIBSARBPROC>(LoadEntry("glXCreateContextAttribsARB", false));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Récupération de la version d'OpenGL
|
// Récupération de la version d'OpenGL
|
||||||
// Ce code se base sur le fait que la carte graphique renverra un contexte de compatibilité avec la plus haute version supportée
|
// Ce code se base sur le fait que la carte graphique renverra un contexte de compatibilité avec la plus haute version supportée
|
||||||
// Ce qui semble vrai au moins chez ATI/AMD et NVidia, mais si quelqu'un à une meilleure idée ...
|
// Ce qui semble vrai au moins chez ATI/AMD et NVidia, mais si quelqu'un à une meilleure idée ...
|
||||||
glGetString = reinterpret_cast<PFNGLGETSTRINGPROC>(LoadEntry("glGetString", false));
|
glGetString = reinterpret_cast<PFNGLGETSTRINGPROC>(LoadEntry("glGetString", false));
|
||||||
if (!glGetString)
|
if (!glGetString)
|
||||||
{
|
{
|
||||||
|
|
@ -448,7 +448,7 @@ namespace NzOpenGL
|
||||||
openGLextensions[nzOpenGLExtension_PixelBufferObject] = (openGLversion >= 210 || IsSupported("GL_ARB_pixel_buffer_object"));
|
openGLextensions[nzOpenGLExtension_PixelBufferObject] = (openGLversion >= 210 || IsSupported("GL_ARB_pixel_buffer_object"));
|
||||||
|
|
||||||
// SamplerObjects
|
// SamplerObjects
|
||||||
if (openGLversion >= 430 || (openGLversion < 400 && openGLversion >= 330) || IsSupported("GL_ARB_sampler_objects"))
|
if (openGLversion >= 330 || IsSupported("GL_ARB_sampler_objects"))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
@ -478,7 +478,7 @@ namespace NzOpenGL
|
||||||
glProgramUniform4fv = reinterpret_cast<PFNGLPROGRAMUNIFORM4FVPROC>(LoadEntry("glProgramUniform4fv"));
|
glProgramUniform4fv = reinterpret_cast<PFNGLPROGRAMUNIFORM4FVPROC>(LoadEntry("glProgramUniform4fv"));
|
||||||
glProgramUniformMatrix4fv = reinterpret_cast<PFNGLPROGRAMUNIFORMMATRIX4FVPROC>(LoadEntry("glProgramUniformMatrix4fv"));
|
glProgramUniformMatrix4fv = reinterpret_cast<PFNGLPROGRAMUNIFORMMATRIX4FVPROC>(LoadEntry("glProgramUniformMatrix4fv"));
|
||||||
|
|
||||||
// Si ARB_gpu_shader_fp64 est supporté, alors cette extension donne également accès aux fonctions utilisant des double
|
// Si ARB_gpu_shader_fp64 est supporté, alors cette extension donne également accès aux fonctions utilisant des double
|
||||||
if (openGLextensions[nzOpenGLExtension_FP64])
|
if (openGLextensions[nzOpenGLExtension_FP64])
|
||||||
{
|
{
|
||||||
glProgramUniform1d = reinterpret_cast<PFNGLPROGRAMUNIFORM1DPROC>(LoadEntry("glProgramUniform1d"));
|
glProgramUniform1d = reinterpret_cast<PFNGLPROGRAMUNIFORM1DPROC>(LoadEntry("glProgramUniform1d"));
|
||||||
|
|
@ -540,9 +540,9 @@ namespace NzOpenGL
|
||||||
if (!glGenerateMipmap)
|
if (!glGenerateMipmap)
|
||||||
glGenerateMipmap = reinterpret_cast<PFNGLGENERATEMIPMAPEXTPROC>(LoadEntry("glGenerateMipmapEXT", false));
|
glGenerateMipmap = reinterpret_cast<PFNGLGENERATEMIPMAPEXTPROC>(LoadEntry("glGenerateMipmapEXT", false));
|
||||||
|
|
||||||
/****************************************Contexte de référence****************************************/
|
/****************************************Contexte de référence****************************************/
|
||||||
|
|
||||||
///FIXME: Utiliser le contexte de chargement comme référence ? (Vérifier mode debug)
|
///FIXME: Utiliser le contexte de chargement comme référence ? (Vérifier mode debug)
|
||||||
if (!NzContext::Initialize())
|
if (!NzContext::Initialize())
|
||||||
{
|
{
|
||||||
NazaraError("Failed to initialize contexts");
|
NazaraError("Failed to initialize contexts");
|
||||||
|
|
@ -653,7 +653,7 @@ namespace NzOpenGL
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
case nzPixelFormat_Stencil1:
|
case nzPixelFormat_Stencil1:
|
||||||
if (type == FormatType_Texture) // Les formats de stencil ne sont pas supportés par les textures
|
if (type == FormatType_Texture) // Les formats de stencil ne sont pas supportés par les textures
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -732,7 +732,7 @@ namespace NzOpenGL
|
||||||
0, // nzElementUsage_Position
|
0, // nzElementUsage_Position
|
||||||
3, // nzElementUsage_Tangent
|
3, // nzElementUsage_Tangent
|
||||||
|
|
||||||
4 // nzElementUsage_TexCoord (Doit être le dernier de la liste car extensible)
|
4 // nzElementUsage_TexCoord (Doit être le dernier de la liste car extensible)
|
||||||
};
|
};
|
||||||
|
|
||||||
GLenum BlendFunc[nzBlendFunc_Max+1] =
|
GLenum BlendFunc[nzBlendFunc_Max+1] =
|
||||||
|
|
@ -779,8 +779,8 @@ namespace NzOpenGL
|
||||||
|
|
||||||
GLenum BufferUsage[nzBufferUsage_Max+1] =
|
GLenum 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"
|
// 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 ?)
|
// Ce qui est je pense le scénario qui arrivera le plus souvent (Prévoir une option pour permettre d'utiliser le STREAM_DRAW ?)
|
||||||
// Source: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=160839
|
// Source: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=160839
|
||||||
GL_DYNAMIC_DRAW, // nzBufferUsage_Dynamic
|
GL_DYNAMIC_DRAW, // nzBufferUsage_Dynamic
|
||||||
GL_STATIC_DRAW // nzBufferUsage_Static
|
GL_STATIC_DRAW // nzBufferUsage_Static
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue