Я следовал руководству по созданию игры на C ++ с SDL2. В начале урока показано, как нарисовать текстуру на экране и заставить ее двигаться. Он отлично работает, когда я запускаю файл с ./Game на терминале, окно открывается, текстура выводится на экран, и она перемещается. Однако, если я выполняю файл с помощью отладчика (F5), все работает нормально, за исключением того, что текстура не отображается на экране. Ошибки не появляются.
Вот задачи. json Я сделал для проекта:
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "myTask",
"command": "/bin/g++",
"args": [
"-g",
"${fileDirname}/*.cpp",
"-lSDL2main",
"-lSDL2",
"-lSDL2_image",
"-lz",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
}
}
]
}
А вот и запуск. json Я сделал:
"version": "0.2.0",
"configurations": [
{
"name": "myLaunch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Habilitar a reformatação automática para gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "myTask",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
Если я нажму F5, отладчик скомпилирует программу и создаст исполняемый файл Game, который он продолжит выполнять просто отлично: откроется окно, сработает рендерер и т. Д. c. Однако текстура, которую я закодировал быть нарисованным и перемещенным на экране не появляется. Но если я вручную выполню ./Game на терминале, все будет нормально.