gpt4 book ai didi

写入图像文件时出现 C++ fwrite 访问冲突

转载 作者:行者123 更新时间:2023-11-28 07:43:01 25 4
gpt4 key购买 nike

我需要在每次调用时将 RGB 帧附加到文件。

这是我的做法:

        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 时,不知何故我遇到了访问冲突。可能我误解了如何使用它。

最佳答案

如何确定 _viewWidth_viewHeight?回读纹理时,您应该使用 glGetTexLevelparameteri 检索它们从 GL_TEXTURE_2D 目标中检索 GL_TEXTURE_WIDTHGL_TEXTURE_HEIGHT 参数。

也行

fwrite(bytes, 1 ,w * h, hOutFile);

错了。什么是w,什么是h?它们永远不会在代码中初始化,也不会连接到那里的其他分配。此外,如果那些是图像的宽度和高度,它仍然缺少像素的元素数。最有可能是 3 个。

有这样的东西会更有意义

int elements = ...; // probably 3
int w = ...;
int h = ...;
size_t bytes_length = w*elements * h;
bytes = malloc(bytes_length)

...

fwrite(bytes, w*elements, h, hOutFile);

关于写入图像文件时出现 C++ fwrite 访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15462052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com