Как правильно передать указатель[] или *(указатель+индекс) в таблицу поиска в C ?
Я пытаюсь использовать таблицу поиска для вычисления пикселей в openGL с входным изображением, вот моя таблица поиска :
float pix_scaling [256]; static void scaling(void) { for (int i = 0; i < 256; i++) pix_scaling[i] = (i * 0.5) + 25; }Я вызываю обе функции в своем основном цикле, но не могу получить результат вывода, он просто пустой черный и почему-то нет ошибки в терминале.
Что я уже пробовал:
Я вызываю свою таблицу поиска в другой функции :
unsigned char * image; unsigned char * image1; static void makerShift(){ unsigned char *p, *p1; float r, g, b; if(image1 == NULL) { image1 = (unsigned char *)malloc(width*height*4); if(image1 == NULL) exit(0); p = image; p1 = image1; for(int i = 0; i < height*width; i++) { r = pix_scaling[p[0]]; // here g = pix_scaling[p[1]]; b = pix_scaling[p[2]]; //.. other computation process..// //to set maximum and minimum pixel value if (r < 0) *(p1+0) = 0; else if(r > 255) *(p1+0) = 255; else *(p1+0) = r; if (g < 0) *(p1+1) = 0; else if(g > 255) *(p1+1) = 255; else *(p1+1) = g; if (b < 0) *(p1+2) = 0; else if(b > 255) *(p1+2) = 255; else *(p1+2) = b; p +=4; p1 +=4; }Образ исходит из этого :
image = SOIL_load_image("Images/sample.jpg", &width, &height, 0, SOIL_LOAD_RGBA);
Либо я попробовал с указателем
pix_scaling[p[0]];или указатель и индекс
pix_scaling[*(p+0)];оба не работают. И без использования pix_scaling , просто
r = (*(p+0) * 0.5) + 25; g = (*(p+1) * 0.5) + 25; b = (*(p+2) * 0.5) + 25;вывод изображения пришел нормально, так что я предполагаю, что проблема заключается в моей функции таблицы поиска. Как мне правильно это сделать ?