我正在用使用OpenSceneGraph的代码替换我的应用程序的OpenGL代码。OpenGL到OpenSceneGraph迁移:在某些纹理尺寸的情况下显示不正确
我正在处理大图像(分辨率高于5000x5000px),因此图像被分割成更小的图块。
绘制瓦片的OpenGL代码使用glTexImage2D(GL_TEXTURE_2D, ..., imageData)
,其中imageData
是瓦片字节数组。
使用OpenSceneGraph,我创建了一个osg::Image
与imageData
相同,并使用此osg::Image
来构造一个简单的四边形。
问题是我有一个丑陋的显示,导致某些osg::Image
尺寸。
对于瓷砖喜欢256x128,一切都OK。
如何loogs但这里是它的外观为254x130瓷砖和OSG ::图片:
我想了解的问题是什么。由于OpenSceneGraph基于OpenGL,我猜我写的OpenSceneGraph代码等同于旧的OpenGL代码。此外,我无法更改瓷砖尺寸,所以我真的需要使其与254x130瓷砖一起工作。
图像创建代码:
`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);`
请分享一些代码,你如何创建,分配和填充osg ::图像 - 是错误的图像,甚至应该是黑色和白色? – rickyviking
我在原始邮件中添加了一些代码。而灰色图像应该看起来像绿色的图像。我也注意到每块瓷砖都倾斜了。 – Krag