假设我从给定文件加载一个字节数组作为RGB.
我已经读过OpenGL喜欢将它的纹理"反转"存储,我已经看到了存储图像的演示程序颠倒了.
所以在我的程序中,我必须逐字节或逐行反转加载的RGB数组吗?
那是因为Bitmap(.bmp)格式将它的行存储为倒置.我不确定是谁想出来的,但这是一个文件格式的东西.好吧,是的,如果你使用自己的.bmp加载器,你必须这样做.但是,您可以使用已经编写过的"颠倒"图像的图像.同样,它只是一个.bmp的东西.OpenGL默认在非翻转图像上工作.
这里有一个小技巧:如果您不想更改.bmp加载程序,可以告诉OpenGL为您翻转图像:
glMatrixMode(GL_TEXTURE);
glLoadIdentity();
glScalef(1.0f, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
Run Code Online (Sandbox Code Playgroud)
这就是我所说的"默认".如果您愿意,可以将OpenGL颠倒过来.但是,如果这仅适用只加载.bmp文件.其他文件格式正确存储其行.因此,我更喜欢第一种方法 - 使用真正的.bmp加载器.
需要说明的是:如果加载.bmp文件,必须先手动翻转图像,然后再将其发送给OpenGL(大多数.bmp加载程序),或者将未翻转的图像发送给OpenGL,并在渲染代码之前添加上述代码.
| 归档时间: |
|
| 查看次数: |
7134 次 |
| 最近记录: |