Всем доброго дня!
Столкнулся со следующей задачей...как загрузить и передать в OpenGL текстуру.
Задачу решил, но получившийся алгоритм не устраивает по скорости исполнения.
Для начала код:
//------------------------------------------------------------------------
//Среда C++ Builder 6.0
//анализируемое изображение грузим в объект TBitmap
//это слегка модернизированный алгоритм из стандартных примеров (теперь можно грузить "большие" текстуры)
int k = size_of_array-1; //size_of_array это размерность массива = 4 * (Width * Height)
for(int j=Image->Height-1; j>=0; j--)
{
for(int i=0; i<Image->Width; i++)
{
Form1->tex[k] = 255;
Form1->tex[k-1] = GetBValue(Image->Canvas->Pixels[j]);
Form1->tex[k-2] = GetGValue(Image->Canvas->Pixels[j]);
Form1->tex[k-3] = GetRValue(Image->Canvas->Pixels[j]);
k-=4;
}
}
Собственно на моем P III скорость загрузки текстуры, без создания mipmap'ов и отрисовки (именно скорость анализа) - порядка 8k милисекунд.
Пробовал расспаралелить задачу, и анализировать в два потока, но при этом длительность возросла, картинка анализировалась порядка 30 секунд.
Уважаемые форумчане, есть идеи? как решить проблему?