IImage* image = new CImage(format, size);\r
ITexture* t = 0;\r
\r
- core::array<IImage*> imageArray(1);\r
- imageArray.push_back(image);\r
-\r
- if (checkImage(imageArray))\r
+ if (checkImage(image))\r
{\r
t = createDeviceDependentTexture(name, image);\r
}\r
\r
ITexture* t = 0;\r
\r
- core::array<IImage*> imageArray(1);\r
- imageArray.push_back(image);\r
-\r
- if (checkImage(imageArray))\r
+ if (checkImage(image))\r
{\r
t = createDeviceDependentTexture(name, image);\r
}\r
if (!image)\r
return nullptr;\r
\r
- core::array<IImage*> imageArray;\r
- imageArray.push_back(image);\r
- if (checkImage(imageArray)) {\r
+ if (checkImage(image)) {\r
texture = createDeviceDependentTexture(hashName.size() ? hashName : file->getFileName(), image);\r
if (texture)\r
os::Printer::log("Loaded texture", file->getFileName(), ELL_DEBUG);\r
return true;\r
}\r
\r
-bool CNullDriver::checkImage(const core::array<IImage*>& image) const\r
+bool CNullDriver::checkImage(IImage *image) const\r
{\r
- bool status = true;\r
+ ECOLOR_FORMAT format = image->getColorFormat();\r
+ core::dimension2d<u32> size = image->getDimension();\r
\r
- if (image.size() > 0)\r
+ switch (format)\r
{\r
- ECOLOR_FORMAT lastFormat = image[0]->getColorFormat();\r
- core::dimension2d<u32> lastSize = image[0]->getDimension();\r
-\r
- for (u32 i = 0; i < image.size() && status; ++i)\r
+ case ECF_DXT1:\r
+ case ECF_DXT2:\r
+ case ECF_DXT3:\r
+ case ECF_DXT4:\r
+ case ECF_DXT5:\r
+ if (!queryFeature(EVDF_TEXTURE_COMPRESSED_DXT))\r
{\r
- ECOLOR_FORMAT format = image[i]->getColorFormat();\r
- core::dimension2d<u32> size = image[i]->getDimension();\r
-\r
- switch (format)\r
- {\r
- case ECF_DXT1:\r
- case ECF_DXT2:\r
- case ECF_DXT3:\r
- case ECF_DXT4:\r
- case ECF_DXT5:\r
- if (!queryFeature(EVDF_TEXTURE_COMPRESSED_DXT))\r
- {\r
- os::Printer::log("DXT texture compression not available.", ELL_ERROR);\r
- status = false;\r
- }\r
- else if (size.getOptimalSize(true, false) != size)\r
- {\r
- os::Printer::log("Invalid size of image for DXT texture, size of image must be power of two.", ELL_ERROR);\r
- status = false;\r
- }\r
- break;\r
- case ECF_PVRTC_RGB2:\r
- case ECF_PVRTC_ARGB2:\r
- case ECF_PVRTC_RGB4:\r
- case ECF_PVRTC_ARGB4:\r
- if (!queryFeature(EVDF_TEXTURE_COMPRESSED_PVRTC))\r
- {\r
- os::Printer::log("PVRTC texture compression not available.", ELL_ERROR);\r
- status = false;\r
- }\r
- else if (size.getOptimalSize(true, false) != size)\r
- {\r
- os::Printer::log("Invalid size of image for PVRTC compressed texture, size of image must be power of two and squared.", ELL_ERROR);\r
- status = false;\r
- }\r
- break;\r
- case ECF_PVRTC2_ARGB2:\r
- case ECF_PVRTC2_ARGB4:\r
- if (!queryFeature(EVDF_TEXTURE_COMPRESSED_PVRTC2))\r
- {\r
- os::Printer::log("PVRTC2 texture compression not available.", ELL_ERROR);\r
- status = false;\r
- }\r
- break;\r
- case ECF_ETC1:\r
- if (!queryFeature(EVDF_TEXTURE_COMPRESSED_ETC1))\r
- {\r
- os::Printer::log("ETC1 texture compression not available.", ELL_ERROR);\r
- status = false;\r
- }\r
- break;\r
- case ECF_ETC2_RGB:\r
- case ECF_ETC2_ARGB:\r
- if (!queryFeature(EVDF_TEXTURE_COMPRESSED_ETC2))\r
- {\r
- os::Printer::log("ETC2 texture compression not available.", ELL_ERROR);\r
- status = false;\r
- }\r
- break;\r
- default:\r
- break;\r
- }\r
-\r
- if (format != lastFormat || size != lastSize)\r
- status = false;\r
+ os::Printer::log("DXT texture compression not available.", ELL_ERROR);\r
+ return false;\r
}\r
+ else if (size.getOptimalSize(true, false) != size)\r
+ {\r
+ os::Printer::log("Invalid size of image for DXT texture, size of image must be power of two.", ELL_ERROR);\r
+ return false;\r
+ }\r
+ break;\r
+ case ECF_PVRTC_RGB2:\r
+ case ECF_PVRTC_ARGB2:\r
+ case ECF_PVRTC_RGB4:\r
+ case ECF_PVRTC_ARGB4:\r
+ if (!queryFeature(EVDF_TEXTURE_COMPRESSED_PVRTC))\r
+ {\r
+ os::Printer::log("PVRTC texture compression not available.", ELL_ERROR);\r
+ return false;\r
+ }\r
+ else if (size.getOptimalSize(true, false) != size)\r
+ {\r
+ os::Printer::log("Invalid size of image for PVRTC compressed texture, size of image must be power of two and squared.", ELL_ERROR);\r
+ return false;\r
+ }\r
+ break;\r
+ case ECF_PVRTC2_ARGB2:\r
+ case ECF_PVRTC2_ARGB4:\r
+ if (!queryFeature(EVDF_TEXTURE_COMPRESSED_PVRTC2))\r
+ {\r
+ os::Printer::log("PVRTC2 texture compression not available.", ELL_ERROR);\r
+ return false;\r
+ }\r
+ break;\r
+ case ECF_ETC1:\r
+ if (!queryFeature(EVDF_TEXTURE_COMPRESSED_ETC1))\r
+ {\r
+ os::Printer::log("ETC1 texture compression not available.", ELL_ERROR);\r
+ return false;\r
+ }\r
+ break;\r
+ case ECF_ETC2_RGB:\r
+ case ECF_ETC2_ARGB:\r
+ if (!queryFeature(EVDF_TEXTURE_COMPRESSED_ETC2))\r
+ {\r
+ os::Printer::log("ETC2 texture compression not available.", ELL_ERROR);\r
+ return false;\r
+ }\r
+ break;\r
+ default:\r
+ break;\r
}\r
- else\r
- {\r
- status = false;\r
- }\r
+ return true;\r
+}\r
+\r
+bool CNullDriver::checkImage(const core::array<IImage*>& image) const\r
+{\r
+ if (!image.size())\r
+ return false;\r
\r
- return status;\r
+ ECOLOR_FORMAT lastFormat = image[0]->getColorFormat();\r
+ core::dimension2d<u32> lastSize = image[0]->getDimension();\r
+\r
+ for (u32 i = 0; i < image.size(); ++i) {\r
+ ECOLOR_FORMAT format = image[i]->getColorFormat();\r
+ core::dimension2d<u32> size = image[i]->getDimension();\r
+\r
+ if (!checkImage(image[i]))\r
+ return false;\r
+\r
+ if (format != lastFormat || size != lastSize)\r
+ return false;\r
+ }\r
+ return true;\r
}\r
\r
//! Enables or disables a texture creation flag.\r