Мне нужно добавить кадр RGB к файлу при каждом вызове.C++ fwrite нарушение прав доступа при записи файла изображения
Вот что я делаю:
size_t lenght=_viewWidth * _viewHeight * 3;
BYTE *bytes=(BYTE*)malloc(lenght);
/////////////// read pixels from OpenGL tex /////////////////////
glBindTexture(GL_TEXTURE_2D,tex);
glGetTexImage(GL_TEXTURE_2D,0,GL_BGR,GL_UNSIGNED_BYTE,bytes);
glBindTexture(GL_TEXTURE_2D,0);
///write it to file :
hOutFile = fopen(outFileName.c_str(), cfg.appendMode ? "ab" : "wb");
assert(hOutFile!=0);
fwrite(bytes, 1 ,w * h, hOutFile); // Write
fclose(hOutFile);
Каким-то образом я получаю нарушение прав доступа при FWRITE получает called.Probably я понял, как использовать его.
w и h инициализируются шириной и высотой изображения. Но теперь я думаю, что параметры fwrite, которые я передаю, неверны. Почему вы передаете «h» только в качестве третьего параметра ? –
@MichaelIV: fwrite является частью стандартной библиотеки C, которая обычно буферизуется. Первым параметром для fwrite является указатель на буфер. Второй параметр - это размер одного элемента в буфере (в нашем случае - одна строка пикселей). Третий параметр - это количество элементов размера, указанных ранее в буфере. 4-й параметр - это указатель на объект stdio FILE. Передача длины строки как размера элемента дает подсказку для stdio, какой хороший размер буферизации. – datenwolf
Хорошо, теперь я понимаю, что вы имеете в виду –