Вобщем зря я эти массивы изучал...
Я думал, что проблема возникает при создании текстуры, но похоже:
Код:
AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image
{
FILE *File=NULL; // File Handle
if (!Filename) // Make Sure A Filename Was Given
{return NULL; } // If Not Return NULL
File=fopen(Filename,"r"); // Check To See If The File Exists
if (File) // Does The File Exist?
{
fclose(File); // Close The Handle
return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
}
return NULL; // If Load Failed Return NULL
}
...эта функция по-любому криво читает BMP нехорошего разрешения.
Поскольку мой ресайз ничего толкового не вывел на экран
Поэтому ноги в руки и я пришёл к неплохому консольному конвертеру nConverter (XnView). Он может и ресайзить, как душе угодно... Хотя lanczoc работает смртельно медленно...
Возникла другая проблема. Для оптимизации загрузки нового файла мне надо не прерывая конвейер поменять на ходу (ко времени, когда она будет готова) новую текстуру. Заставить не ждать nConverter и получить когда картинка будет готова у меня получилось, но на этапе
Код:
AUX_RGBImageRec *TextureImage[1]; // Create Storage Space For The Texture
memset(TextureImage,0,sizeof(void *)*1); // Set The Pointer To NULL
if (TextureImage[0]=LoadBMP(strTemp))
{
Status=TRUE;
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
}
у меня возникает критическая (хоть и Очень маленькая) задержка (мне она очень мешает).
Есть предложения как её можно запаралеллить, не заставляя конвеер ждать, или это невозможно???