C++ 从资源中读取图像时,QImage为空
我正在为一个大学项目开发一个简单的fps射击游戏。我使用C++、QT和OpenGL,在纹理加载时遇到问题。我把我的纹理放到资源文件中。加载后,存储纹理的QImage对象为空。 这是我的资源文件:C++ 从资源中读取图像时,QImage为空,c++,qt,opengl,qimage,qtgui,C++,Qt,Opengl,Qimage,Qtgui,我正在为一个大学项目开发一个简单的fps射击游戏。我使用C++、QT和OpenGL,在纹理加载时遇到问题。我把我的纹理放到资源文件中。加载后,存储纹理的QImage对象为空。 这是我的资源文件: <RCC> <qresource prefix="/sounds"> <file alias="rifle">rifle.wav</file> </qresource> <qresource pre
<RCC>
<qresource prefix="/sounds">
<file alias="rifle">rifle.wav</file>
</qresource>
<qresource prefix="/textures">
<file alias="ground">ground00.tga</file>
<file alias="sky_back">sky_back.tga</file>
<file alias="sky_front">sky_front.tga</file>
<file alias="sky_left">sky_left.tga</file>
<file alias="sky_right">sky_right.tga</file>
<file alias="sky_up">sky_up.tga</file>
<file alias="wall05">wall05.tga</file>
<file alias="wall06">wall06.tga</file>
<file alias="wall07">wall07.tga</file>
<file alias="wall08">wall08.tga</file>
<file alias="wall09">wall09.tga</file>
</qresource>
</RCC>
但是,两个调用都失败。QImageReader支持tga文件,“tga”在
qDebug() << QImageReader::supportedImageFormats ();
对于使用资源别名
加载纹理(“纹理/地面”,0)的情况代码>它返回true我在这里陈述显而易见的事实。。。但如果QImage isNull()返回true,则必须表明“:/textures/ground00.tga”不是指向对象的有效路径,或者资源无效。是否安装了tga图像格式插件?不管SupporteImage Formats()调用如何,您都可以检查它吗?@LaszloPapp:我如何检查它?/usr/lib/qt/plugins/imageformats/在我的Archlinux上。tga插件来自qtimageformats模块。请检查您的Qt安装。查找插件文件夹。如果没有,则需要使用QLibrary显式加载插件。你做到了吗?
load_texture(":/textures/ground00.tga",0);//using filename
load_texture(":/textures/ground",0);//using alias
qDebug() << QImageReader::supportedImageFormats ();
if(QFile::exists(file))
{
std::cout<<"File "<<file.toStdString()<<" exists"<<std::endl;
}