C++图像处理

Tun*_*uni 5 c++ image

所以我为游戏制作了这个程序,需要帮助才能让它更加自动化.

该程序接收图像然后显示它.我在OpenGL中对纹理这样做.当我拍摄游戏截图时,它通常是700x400左右.我将高度和宽度输入到我的程序中,通过添加空白区域将图像大小调整为1024x1024(使其成为POT纹理以获得更好的兼容性)(原始图像保留在左上角并一直向(700,400)和休息只是空白;有人知道这个术语吗?)然后将它加载到我的程序中并调整角落,这样只显示从(0,0)到(700,400)的部分.

这就是我处理图像显示的方式.现在,我想自动完成.所以我需要一张700x400的图片,将其传递给程序,该程序将获得图像的宽度和高度(700x400),通过添加空格将其大小调整为1024x1024,然后加载它.

那么有谁知道能够做到这一点的C++库?我仍然会手动拍摄截图.

我使用Simple OpenGL图像库(SOIL)来加载图片(.bmp)并将其转换为纹理.

谢谢!

Bar*_*icz 1

您实际上不必通过添加空白来调整大小来正确显示图像。事实上,这确实是一种低效的方法,特别是因为您以 .bmp 格式存储图像。

SOIL 能够在加载纹理时自动添加空白区域 - 也许只是尝试按原样加载文件,而不执行任何操作。

来自土壤文档:

可以自动将图像重新缩放到下一个最大的二次方尺寸

可以加载 GUI 元素或初始屏幕的矩形纹理(需要 GL_ARB/EXT/NV_texture_rectangle)

无论如何,您不必使用纹理来在屏幕上显示像素。我认为您没有使用着色器进行渲染 - 如果一切都通过固定管道,那么就有glDrawPixels函数,这会简单得多。只需记住将您的 SOIL 调用更改为 SOIL_load_image.