- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个奇怪的问题,我自己绝对找不到解决方案。我正在编译一个程序,如下所示:
gcc -O2 -std=c99 -pedantic -W -Wall $(sdl2-config --cflags --libs) -lGL -o 测试 main.c src/sdlFunc.c src/mainLoop.c src/openglFunc.c
-pendantic
和 -Wall
不返回任何错误或警告。我认为问题出在这一段代码上:
while (!exitProgram) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT) exitProgram = 1;
if (event.type == SDL_MOUSEBUTTONDOWN) exitProgram = 1;
}
if (kbState[SDL_SCANCODE_W] || kbState[SDL_SCANCODE_UP]) {
rotation_x += 0.5;
}
if (kbState[SDL_SCANCODE_S] || kbState[SDL_SCANCODE_DOWN]) {
rotation_x -= 0.5;
}
if (kbState[SDL_SCANCODE_A] || kbState[SDL_SCANCODE_LEFT]) {
rotation_y += 0.5;
}
if (kbState[SDL_SCANCODE_D] || kbState[SDL_SCANCODE_RIGHT]) {
rotation_y -= 0.5;
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(rotation_x * 0.1, rotation_y * 0.1, rotation_x * 0.2, rotation_y * 0.2);
createCube(0.5, rotation_x, rotation_y);
SDL_GL_SwapWindow(screen);
}
通常,此循环会一直循环,直到我按下鼠标按钮。但是,当使用 -O2
(或任何 -O
)编译时,程序无法运行。 Gdb 说程序正常退出。另外,如果我注释两个 if
语句,程序将无法退出并正常运行。
我必须补充一点,这个循环在一个由 main 调用的函数中运行(显然在文件 src/mainLoop.c 中)。
有什么建议吗?
最佳答案
正如 sth 所说,我忘记正确初始化 exitProgram。我想知道为什么 -pendantic
和 -Wall
没有警告我这一点。
关于C:优化导致SDL_QUIT为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24205326/
我的 SDL/Opengl 代码有一个小问题,具体来说,当我尝试对 mousebuttondown 事件执行某些操作时,程序会向堆栈发送一个 sdl_quit 事件,从而关闭我的应用程序。 我知道这一
使用以下代码调用 SDL_Quit() 时遇到段错误: #include #include const int SCREEN_WIDTH = 640; const int SCREEN_HEIG
使用 SDL2.0 时,如果 SDL 无法创建窗口或渲染器,不使用 SDL_Quit() 停止程序是否合理? 例如,我可以这样写吗(在 SDL 初始化、窗口和渲染器创建之后): if (!render
以下从教程网站获取的基本 SDL2 代码引起了一些奇怪的问题: #include #include #include #include #define SCREENH 768 #define
我正在编写一个游戏引擎只是为了练习,但我仍然坚持第一个挑战。窗口管理器。 https://github.com/thebenius/SDL 我已经创建了一个 GitHub Repo 来向您展示代码,但
基本上,在程序终止之前将一直存在的表面上,我是否需要为每个表面运行 SDL_FreeSurface(),或者 SDL_Quit()为我处理这一切? 我问主要是因为指向我的一些表面的指针是类成员,因此如
我想将 SDL 与 C 而不是 C++ 一起使用,但我无法使事件正常工作。如果此代码是 .c 或 cpp 文件并使用 g++ 编译,或者如果它是 .cpp 文件并使用 gcc 编译,则此代码可以完美运
我是一名优秀的程序员,十分优秀!