5

所以我为游戏制作了这个程序,需要帮助让它更自动化一些。

该程序接收图像,然后显示它。我正在OpenGL中的纹理上执行此操作。当我截取游戏截图时,它通常是 700x400 左右。我将高度和宽度输入到我的程序中,通过添加空白将图像调整为 1024x1024(使其成为 POT 纹理以获得更好的兼容性)(原始图像保持在左上角并一直到 (700,400) 和rest 只是空白;有人知道这个术语吗?)然后将其加载到我的程序中并调整角,因此只显示从 (0,0) 到 (700,400) 的部分。

这就是我处理图像显示的方式。现在,我想让这个自动化。所以我会拍一张 700x400 的图片,将它传递给程序,该程序将获取图像的宽度和高度(700x400),通过添加空白将其调整为 1024x1024,然后加载它。

那么有人知道能够做到这一点的 C++ 库吗?不过,我仍然会手动截取屏幕截图。

我正在使用 Simple OpenGL Image Library (SOIL) 加载图片 (.bmp) 并将其转换为纹理。

谢谢!

4

1 回答 1

1

您实际上不必通过添加空格来正确显示图像来调整大小。事实上,这样做的效率非常低,尤其是因为您以 .bmp 格式存储图像。

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

来自土壤文档:

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

可以为 GUI 元素或闪屏加载矩形纹理(需要 GL_ARB/EXT/NV_texture_rectangle)

无论如何,您不必使用纹理在屏幕上显示像素。我假设您没有使用着色器进行渲染 - 如果它全部通过固定管道,则有glDrawPixels功能,这将更简单。只要记住将您的 SOIL 调用更改为 SOIL_load_image.

于 2012-06-13T09:58:28.430 回答