【发布时间】:2015-06-28 18:12:24
【问题描述】:
我使用 Android NDK 和 FreeImage 库编写游戏以将图像加载到我的游戏中。它以 BGR 格式加载图像。可以加载RGB格式吗?或者我需要手动交换 R 和 B 组件?
已编辑
我的设备是三星 Galaxy S4(armv7 架构)。这是代码`
FIMEMORY* fiStream = FreeImage_OpenMemory((BYTE*)data, size);
FREE_IMAGE_FORMAT fif = FreeImage_GetFileTypeFromMemory(fiStream);
if (FreeImage_FIFSupportsReading(fif))
{
dib = FreeImage_LoadFromMemory(fif, fiStream, 0);
}
if (!dib)
return;
data_ = FreeImage_GetBits(dib);
width_ = FreeImage_GetWidth(dib);
height_ = FreeImage_GetHeight(dib);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width_, height_, 0, GL_RGB, GL_UNSIGNED_BYTE, data_ );
【问题讨论】:
-
你如何判断是 FreeImage 改变了你的 RGB 顺序?
-
我将 glTexImage2D 与 type=GL_RGB 一起使用,图像以错误的颜色显示,当我设置 type=GL_BGR 时,它以正确的颜色显示
-
几个问题:1) 使用其他实用程序显示图像是否正确显示? 2)你的计算机架构是Big Endian还是Little Endian。强烈建议贴出相关代码。
-
类型?你不是说format吗?
-
@user3629249 我编辑了这个问题。可以看代码。
标签: c opengl-es android-ndk freeimage