Ich ersetze den OpenGL-Code meiner App durch Code, der OpenSceneGraph verwendet.OpenGL zu OpenSceneGraph-Migration: Falsche Anzeige bei bestimmten Texturdimensionen
Ich arbeite mit großen Bildern (Auflösung höher als 5000x5000px), daher werden Bilder in kleinere Kacheln aufgeteilt.
Der OpenGL-Code zum Zeichnen der Kacheln verwendet glTexImage2D(GL_TEXTURE_2D, ..., imageData)
, wobei imageData
das Kachel-Byte-Array ist.
Mit OpenSceneGraph erzeuge ich eine osg::Image
mit der gleichen imageData
und verwenden Sie diese osg::Image
, um ein einfaches Quad zu texturieren.
Das Problem ist, dass ich eine hässliche Anzeige für bestimmte osg::Image
Dimensionen haben.
Für Fliesen wie 256x128 ist alles in Ordnung.
Das ist, wie das Originalbild loogs mit OpenGL
Aber hier ist, wie es für 254x130 Fliese sieht und OSG :: Image:
Ich mag würde zu verstehen, was das Problem ist, . Da OpenSceneGraph auf OpenGL basiert, denke ich, dass der OpenSceneGraph Code, den ich geschrieben habe, dem alten OpenGL entspricht. Außerdem kann ich die Kachelgröße nicht ändern, also muss ich wirklich mit 254x130 Kacheln arbeiten.
Bild Erstellungscode:
`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);`
Bitte teilen Sie Code, wie Sie erstellen, zuweisen und füllen Sie das OSG :: Bild - ist das falsche Bild sogar schwarz und weiß? – rickyviking
Ich habe Code in der ursprünglichen Nachricht hinzugefügt. Und das graue Bild soll wie das grüne aussehen. Ich habe auch bemerkt, dass alle Fliesen geneigt sind. – Krag