Je remplace le code OpenGL de mon application par du code utilisant OpenSceneGraph.Migration OpenGL vers OpenSceneGraph: Affichage incorrect dans le cas de certaines cotes de texture
Je travaille avec de grandes images (résolution supérieure à 5000x5000px), par conséquent les images sont divisées en mosaïques plus petites.
Le code OpenGL pour dessiner les tuiles utilise glTexImage2D(GL_TEXTURE_2D, ..., imageData)
, où imageData
est le tableau d'octets de tuiles.
Avec OpenSceneGraph, je crée un osg::Image
avec le même imageData
et utilise ce osg::Image
pour texturer un quad simple.
Le problème est que j'ai un affichage moche résultant de certaines dimensions osg::Image
.
Pour les carreaux comme 256x128, tout est OK.
Voilà comment l'image originale loogs avec OpenGL
Mais est ici comment il cherche 254x130 carreaux et osg :: Image:
Je voudrais comprendre ce que le problème est . Puisque OpenSceneGraph est basé sur OpenGL, je suppose que le code OpenSceneGraph que j'ai écrit est équivalent à l'ancien OpenGL. De plus, je ne peux pas changer la taille des carreaux, donc je dois vraiment le faire fonctionner avec des carreaux 254x130.
l'image Code de création:
`osg::Image * image = new osg::Image();
//width, height, textFormat, pixelFormat, type and data
//are the ones that were used with glTexImage2D
image->setImage(width, height, 1, textFormat, pixelFormat, type, data, NO_DELETE);
osg::Texture2D * texture = new osg::Texture2D;
texture->setImage(image);
stateset->setTextureAttributeAndModes(0, texture, osg::StateAttribute::ON);`
Veuillez partager du code sur la façon dont vous créez, allouez et remplissez osg :: Image - la mauvaise image est-elle censée être en noir et blanc? – rickyviking
J'ai ajouté du code dans le message d'origine. Et l'image grise est censée ressembler à la verte. J'ai également remarqué que toutes les tuiles sont inclinées. – Krag