Fixed OpenGL 4 not loading sampler objets

Also fixed file encoding


Former-commit-id: 51683c2d9dff8a56c96ad972c8b6d6006004f1f2
This commit is contained in:
Lynix 2012-12-08 11:48:30 +01:00
parent dc3af6ae69
commit 119a1420d1
1 changed files with 18 additions and 18 deletions

View File

@ -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