【发布时间】:2016-06-22 03:01:44
【问题描述】:
我目前正在使用 SDL 1.2.4 和 C++Builder 10.0 Seattle。我已经设置了一个简单的测试程序来检查一切是否正常。
以下代码编译时没有警告或错误,但给我一个运行时错误:
Exception-Klasse $C0000005 mit Meldung '在 0x68cc46f5 的访问冲突:读取地址 0x00001701'。 Prozes Project1.exe (2624)
int _tmain(int argc, _TCHAR* argv[]) {
SDL_Init(SDL_INIT_VIDEO);
SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(70,(double)640/480,1,1000);
while (true) {
SDL_PumpEvents();
}
return 0;
}
如果我删除glMatrixMode(...),代码“有效”,这意味着会弹出一个窗口但什么也不显示。所以 MatrixMode 似乎是这里的问题。
【问题讨论】:
-
你能检查一下调用
SDL_SetVideoMode(640, 480, 32, SDL_OPENGL);是否真的成功了。在此处查看示例:libsdl.org/release/SDL-1.2.15/docs/html/sdlglsetattribute.html -
也许 SDL 使用带有核心配置文件的现代 OpenGL3 上下文。不推荐使用的函数,包括矩阵,被删除,所以 glMatrixMode 的函数指针为 NULL(这解释了访问冲突)。
标签: c++ opengl sdl c++builder c++builder-10-seattle