gpt4 book ai didi

c++ - 关于 OpenGL 的问题和将 C 转换为 C++ 的过程

转载 作者:行者123 更新时间:2023-11-30 03:12:40 25 4
gpt4 key购买 nike

好的。所以我想在 c++ 中使用用 c 编写的文件。我用 C 语言运行代码,完全没有问题。

因为不懂c,所以用了一段时间的转换软件,但效果不佳(猜测编码格式不是它需要的风格)。我决定自己尝试一下,看起来我所要做的就是将一些 malloc 语句更改为新语句并将 free 替换为 delete。所以我运行了这个程序,它看起来大部分功能都可以正常工作,但是这个给我带来了麻烦。

当我尝试更新新图像的显示时(我正在读取 tiff 图像数据并将其显示在屏幕上),我在这些特定语句中遇到了问题:

glutReshapeWindow(ImageWidth,ImageLength);
glClear(GL_COLOR_BUFFER_BIT);//these
glRasterPos2i(0, 0);//three
glDrawPixels(ImageWidth, ImageLength, GL_RGB,
GL_UNSIGNED_BYTE, ImageData);//statements are the ones giving me the error

我在代码块中包含了第一条语句,以表明它不会立即破坏任何类型的 OpenGl 调用。

我不断收到错误

Cannot access memory at address 0xfbad248c
Cannot access memory at address 0xfbad248c
Cannot access memory at address 0xaabbeeaa

我知道这可能有点含糊,但这个错误的一些常见来源是什么?它在 c 中工作,在快速切换到 c++ 时可能导致此错误的原因是什么?

谢谢,如果您需要更多信息,请告诉我。


好吧,所以我并没有真正使用我认为的标准 OpenGL 库(这是用于类的,我从一位讲师那里得到了库文件)。我有代码

#include <GL/glut.h>

作为我的#include。这些库与在 c 文件中找到的库完全相同,因为我只是将它们复制并粘贴到我的 c++ 项目中。 (我还在另一个 C++ 项目中以有限的方式与他们合作过)。为了以防万一,我检查了文件系统中的文件“OPENGL32.DLL”和“GLU32.DLL”,但没有找到它们。

我应该包括这些额外的细节:

在调用实际输入循环之前,在程序开始时调用 init() 方法:

void
init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}

此方法似乎工作正常(此函数调用后不久创建了一个简单的棋盘图案)。我不确定这些属于哪种 OpenGL 文件(“OPENGL32.DLL”或“GLU32.DLL”),但希望这可以稍微缩小问题的范围。

至于 ImageData 行,我不认为 ImageData 对象已损坏或类似的东西,因为您正在谈论的某些原因以及我发布的第一个代码块中的代码(错误源)在 else block 中:

if (ImageData == NULL) {/*code*/}
else{/*this is where the error code is*/}

如果您认为有帮助,我可以发布有关 makefile 的信息(如果没有帮助,我不想让这个线程困惑)。

最佳答案

我不知道你对 C 和 C++ 之间的差异有多少经验,所以我不想光顾你,但它值得一试:

你用过吗

unsigned char* data = new unsigned char[size]; //correct
//....
delete[] data;

(数组分配)或

unsigned char* data new unsigned char(size); //wrong
//....
delete data;

(分配一个具有值大小的字符)

你的图像数据?

关于c++ - 关于 OpenGL 的问题和将 C 转换为 C++ 的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/589836/

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