Pages: 1
- Accueil forums
- » Aide Irrlicht C++
- » OpenGL: nombre de canaux de textures
10-01-2011 18:58:13
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.18.112
- Courriel
comment perdre un temps fou pour pas grand chose.
Cherchant à transformer un shader de DirectX pour OpenGL (que je connais très peu il faut dire) employant 8 canaux
de textures, j'ai fini par comprendre qu'en fait Irrlicht me limitait à 4 canaux de textures avec le driver OpenGL, alors
que pourtant j'avais bien spécifié à Irrlicht que je souhaitais travailler sur 8 canaux max (chose qui se passe très bien avec DX9).
En cherchant, le forum officiel est venu conforter mes soupçons de bug sur la partie driver OGL.
Donc, si vous souhaiter monter au dessus de 4 canaux avec OGL, voici une partie de code à
modifier au niveau du code source du moteur:
pour les version 1.7.x
Code c++ :
diff -rupN irrlicht-1.7.x/source/Irrlicht/COpenGLExtensionHandler.cpp
@@ void COpenGLExtensionHandler::initExtens
{...
glGetIntegerv(GL_MAX_TEXTURE_UNITS, &num);
MaxTextureUnits=static_cast<u8>(num);
+ glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &num);
+ if (MaxTextureUnits<static_cast<u8>(num))
+ MaxTextureUnits=static_cast<u8>(num);
}
#endif
glGetIntegerv(GL_MAX_LIGHTS, &num);pour la version 1.8.0
Code c++ :
diff -rupN irrlicht-1.8.x/source/Irrlicht/COpenGLExtensionHandler.cpp
@@ void COpenGLExtensionHandler::initExtens
{...
glGetIntegerv(GL_MAX_TEXTURE_UNITS, &num);
MaxSupportedTextures=static_cast<u8>(num);
+ glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS_ARB, &num);
+ if (MaxSupportedTextures<static_cast<u8>(num))
+ MaxSupportedTextures=static_cast<u8>(num);
}
#endif
glGetIntegerv(GL_MAX_LIGHTS, &num);noubliez pas quand même de changer la valeur de #define _IRR_MATERIAL_MAX_TEXTURES_ 8
Force et sagesse...
Hors ligne
13-01-2011 17:56:35
- wabb
- Membres

- Date d'inscription:
- Messages: 68
- IP: 82.145.209.25
- Courriel Site web
ok, merci pour l'aide.
Projet: EVO_Conflict's Factor (http://titanworks-system.over-blog.fr/#)
Hors ligne
14-01-2011 17:52:48
- mmorpglefilm
- Membres

- Date d'inscription:
- Messages: 162
- IP: 109.8.21.83
- Courriel Site web
Donc si je comprends bien, avec ce code on peut utiliser 8 textures sur un seul mesh avec le driver opengl ?
Si tu pouvais m’éclaircir un peu....parce que franchement je ne comprends pas très bien ton code tmyke.
En plus je n'ai jamais appris opengl, je trouve (personnellement) irrlicht beaucoup mieux pour ce que je fais.
Mais bon, merci quand même.
Hors ligne
14-01-2011 18:04:01
- tmyke
- Administrateurs

- Date d'inscription:
- Messages: 1025
- IP: 90.56.18.112
- Courriel
OpenGL est une des API qui peut être employée par Irrlicht, au même titre que Direct3D par exemple.
Je me suis juste rendu compte qu'avec le couple Irrlicht/OpenGL, le scan hardware limitait
visiblement systématiquement à 4 canaux de texture. Le bout de code que je fournis (issue
du forum off) permet juste de corriger cela au niveau du code du moteur.
Force et sagesse...
Hors ligne
14-01-2011 18:48:50
- mmorpglefilm
- Membres

- Date d'inscription:
- Messages: 162
- IP: 109.8.21.83
- Courriel Site web
Ok, merci.
Hors ligne



