本文整理汇总了C++中Compressor::process方法的典型用法代码示例。如果您正苦于以下问题:C++ Compressor::process方法的具体用法?C++ Compressor::process怎么用?C++ Compressor::process使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Compressor
的用法示例。
在下文中一共展示了Compressor::process方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: outputHandler
//! Compresses data to a DXT format using nVidia's Texture Tools library.
// The data must be in unsigned byte RGBA format. The alpha channel will be ignored if DxtType is IL_DXT1.
// DxtSize is used to return the size in bytes of the DXTC data returned.
ILAPI ILubyte* ILAPIENTRY ilNVidiaCompressDXT(ILubyte *Data, ILuint Width, ILuint Height, ILuint Depth, ILenum DxtFormat, ILuint *DxtSize)
{
if (Data == NULL) { // We cannot operate on a null pointer.
ilSetError(IL_INVALID_PARAM);
return NULL;
}
// The nVidia Texture Tools library does not support volume textures yet.
if (Depth != 1) {
ilSetError(IL_INVALID_PARAM);
return NULL;
}
InputOptions inputOptions;
inputOptions.setTextureLayout(TextureType_2D, Width, Height);
inputOptions.setMipmapData(Data, Width, Height);
inputOptions.setMipmapGeneration(false, -1); //@TODO: Use this in certain cases.
OutputOptions outputOptions;
ilOutputHandlerMem outputHandler(Width, Height, DxtFormat);
outputOptions.setOutputHeader(false);
outputOptions.setOutputHandler(&outputHandler);
if (outputHandler.NewData == NULL)
return NULL;
CompressionOptions compressionOptions;
switch (DxtFormat)
{
case IL_DXT1:
compressionOptions.setFormat(Format_DXT1);
break;
case IL_DXT1A:
compressionOptions.setFormat(Format_DXT1a);
break;
case IL_DXT3:
compressionOptions.setFormat(Format_DXT1);
break;
case IL_DXT5:
compressionOptions.setFormat(Format_DXT5);
break;
default: // Does not support DXT2 or DXT4.
ilSetError(IL_INVALID_PARAM);
break;
}
Compressor compressor;
compressor.process(inputOptions, compressionOptions, outputOptions);
*DxtSize = outputHandler.Size;
return outputHandler.NewData;
}
示例2: ilNVidiaCompressDXTFile
//! Compresses data to a DXT format using nVidia's Texture Tools library.
// This version is supposed to be completely internal to DevIL.
// The data must be in unsigned byte RGBA format. The alpha channel will be ignored if DxtType is IL_DXT1.
ILuint ilNVidiaCompressDXTFile(ILubyte *Data, ILuint Width, ILuint Height, ILuint Depth, ILenum DxtFormat)
{
ILuint FilePos = itellw();
// The nVidia Texture Tools library does not support volume textures yet.
if (Depth != 1) {
ilSetError(IL_INVALID_PARAM);
return 0;
}
InputOptions inputOptions;
inputOptions.setTextureLayout(TextureType_2D, Width, Height);
inputOptions.setMipmapData(Data, Width, Height);
inputOptions.setMipmapGeneration(false, -1); //@TODO: Use this in certain cases.
OutputOptions outputOptions;
ilOutputHandlerFile outputHandler(Width, Height, DxtFormat);
outputOptions.setOutputHeader(false);
outputOptions.setOutputHandler(&outputHandler);
CompressionOptions compressionOptions;
switch (DxtFormat)
{
case IL_DXT1:
compressionOptions.setFormat(Format_DXT1);
break;
case IL_DXT1A:
compressionOptions.setFormat(Format_DXT1a);
break;
case IL_DXT3:
compressionOptions.setFormat(Format_DXT1);
break;
case IL_DXT5:
compressionOptions.setFormat(Format_DXT5);
break;
default: // Does not support DXT2 or DXT4.
ilSetError(IL_INVALID_PARAM);
break;
}
Compressor compressor;
compressor.process(inputOptions, compressionOptions, outputOptions);
return itellw() - FilePos; // Return the number of characters written.
}
示例3: WriteDxtFile
bool LibDxtHelper::WriteDxtFile(const String & fileNameOriginal, int32 width, int32 height, uint8 * data, PixelFormat compressionFormat, bool generateMipmaps)
{
if(!( (compressionFormat >= FORMAT_DXT1 && compressionFormat <= FORMAT_DXT5NM)|| (compressionFormat == FORMAT_RGBA8888)) )
{
Logger::Error("[LibDxtHelper::WriteDxtFile] Wrong copression format (%d).", compressionFormat);
return false;
}
//creating tmp dds file, nvtt accept only filename.dds as input, because of this the last letter befor "." should be changed to "_".
String extension = FileSystem::Instance()->GetExtension(fileNameOriginal);
if(0 != CompareCaseInsensitive(extension, ".dds"))
{
Logger::Error("[LibDxtHelper::WriteDxtFile] Wrong input file name (%s).", fileNameOriginal.c_str());
return false;
}
nvtt::Format innerComprFormat = NvttHelper::GetNVTTFormatByPixelFormat(compressionFormat);
if(nvtt::Format_BC5 == innerComprFormat)
{ //bc5 is unsupported, used to determinate fail in search
Logger::Error("[LibDxtHelper::WriteDxtFile] Can't work with nvtt::Format_BC5.");
return false;
}
uint32 imgDataSize = width * height * Texture::GetPixelFormatSizeInBytes(FORMAT_RGBA8888);
NvttHelper::SwapBRChannels(data, imgDataSize);
InputOptions inputOptions;
inputOptions.setTextureLayout(TextureType_2D, width, height);
inputOptions.setMipmapGeneration(generateMipmaps);
inputOptions.setMipmapData(data, width, height);
CompressionOptions compressionOptions;
compressionOptions.setFormat(innerComprFormat);
if(FORMAT_DXT1NM == compressionFormat)
{
compressionOptions.setColorWeights(1, 1, 0);
}
else if (FORMAT_DXT5NM == compressionFormat)
{
inputOptions.setNormalMap(true);
}
OutputOptions outputOptions;
String fileName = FileSystem::Instance()->ReplaceExtension(fileNameOriginal, "_dds");
outputOptions.setFileName(fileName.c_str());
Compressor compressor;
bool ret = compressor.process(inputOptions, compressionOptions, outputOptions);
if(ret)
{
FileSystem::Instance()->DeleteFile(fileNameOriginal);
if(!FileSystem::Instance()->MoveFile(fileName, fileNameOriginal, true))
{
Logger::Error("[LibDxtHelper::WriteDxtFile] Temporary dds file renamig failed.");
ret = false;
}
}
else
{
Logger::Error("[LibDxtHelper::WriteDxtFile] Error during writing DDS file (%s).", fileName.c_str());
}
return ret;
}