2012-06-13 160 views
5

所以我制作了一个游戏程序,需要帮助让它更自动一些。C++图像处理

该方案需要在图像中,然后显示它。我在OpenGL中通过纹理来做这件事。当我截取游戏截图时,通常大约是700x400。我将高度和宽度输入到我的程序中,通过添加空白区域(原始图像停留在左上角并一直走到(700,400),将图像调整为1024x1024(使其成为POT纹理以实现更好的兼容性)其余的只是空白;有没有人知道这个术语?),然后将其加载到我的程序中并调整角点,以便只显示(0,0)到(700,400)的部分。

这就是我如何处理图像的显示。现在,我想使这个自动。所以我会拍摄一张700x400的照片,将它传递给可以获得图像宽度和高度(700x400)的程序,通过添加空白区域将其重新调整为1024x1024,然后加载它。

因此,没有人知道一个C++库能够这样做的?我仍然会手动截图。

我使用的是简单的OpenGL图像库(土),用于加载选择图片(.bmp),并将其转换成一个纹理。

谢谢!

回答

1

你真的没有加入空格,以正确显示图像调整。事实上,这是非常有效的方法,特别是因为您以.bmp格式存储图像。

土壤能够加载纹理时自动添加空格 - 也许只是尝试加载文件原样,而不做任何操作。

土壤文档:

可以将图像自动地重新缩放为幂的2 下一个最大尺寸

可以负荷rectangluar纹理GUI元素或闪屏 (需要GL_ARB/EXT/NV_texture_rectangle)

无论如何,您不必使用纹理来显示s上的像素creen。我认为你没有使用着色器进行渲染 - 如果它全部通过固定管道传输,就会有更简单的功能glDrawPixels。请记住将您的SOIL电话改为SOIL_load_image。 “

+0

”可以自动将图像重新缩放到下一个最大的二次幂的大小“ - 我真的错过了”自动“这个词。 :D我会尝试你所说的。谢谢! – Tuntuni

+0

我试图加载它没有调整大小,但它只是变得怪异。我很确定我的角落在他们的位置。图像也变成了灰度,当我缩放它时,它获得了一些颜色。 你可以给我任何在SOIL_load_image和glDrawPixels上的exmaples,或者一个链接吗?谢谢。 – Tuntuni

+0

也许试试'SOIL_FLAG_POWER_OF_TWO'或'SOIL_FLAG_TEXTURE_RECTANGLE'。 –