使用PNG(OpenGL + SDL2.0)调整纹理缩放问题的大小

时间:2015-01-02 03:32:35

标签: c++ opengl resize textures sdl

我一直在尝试为自己的项目开发一个简单的OpenGL(2.1)图形引擎。我已经使用SDL2.0进行了设置并运行良好,我一直在关注Lazy Foo的教程。哪个是开始使用的好地方,可供参考。

我也一直致力于等距游戏项目。但由于某种原因,我遇到了一个奇怪的故障。我一直在不知疲倦地工作这个项目,我一直在寻找无济于事。

当我使用与PNG文件中相同大小的纹理绘制地图图块时,没有问题。在这里,我使用粗体彩色瓷砖,没有轮廓,以便在图像之后突出显示图像中的问题:

http://s11.postimg.org/89skepi8v/no_issue.jpg?noCache=1420167779

我最初的计划是使用双倍大小的瓷砖,并在项目中将其原始尺寸的一半绘制出来。所以不是96 * 64,而是以48 * 32绘制它们。他们看起来好像这样(好吧......除了这个问题),并且计划是让整个项目在放大时看起来更好。实际上,放大以使得瓷砖的尺寸与它们在PNG中是这些瓷砖正确绘制的唯一方式。否则,当它们被绘制得更小时,我会在瓷砖周围得到一个轮廓,如下所示(当它们一起使用时给它们一个网格外观):

http://s21.postimg.org/9j737q00z/issue.jpg?noCache=1420167718

地图的实际绘图不是问题 - 即。瓷砖坐标。起初我认为这些轮廓是瓷砖之间的间隙。但是早些时候我确实搞砸了绘画一段时间,我可以看到,即使这些瓷砖重叠,它们也会在纹理缩小时有轮廓。

我真的很茫然。我只需要想法......选择真的。但我会说,一旦我遇到这些问题,结果只是一个文件导出设置需要不同,我花了整整3天在网上四处看看。这次我不认为是这种情况,但我想我会问这个时间。

我在Windows 7和Ubuntu上测试了这个。

*更新*

我似乎已经解决了这个问题(至少目前为止)。由三十二上校提供的想法让我走上了一条新的轨道,寻找什么。我发现我正在使用'GL_LINEAR': -

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);

当我应该使用'GL_NEAREST'时: -

glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);

现在可以正确渲染切片。 :)。答案在下面的链接页面上提供(不知道为什么我没有尽快发现它)。

https://www.opengl.org/discussion_boards/showthread.php/178038-Black-lines-at-edges-of-textures

0 个答案:

没有答案