Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
0 / 0 / 0
Регистрация: 19.01.2026
Сообщений: 5

Как стать успешным в С++

19.01.2026, 21:44. Показов 13506. Ответов 141
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дайте подробный или не очень гайд, хочу начать изучать c++, что стоит делать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.01.2026, 21:44
Ответы с готовыми решениями:

Написать функцию, которая копирует строку на место другого строки и возвращает признак того, что копирование было успешным
Написать функцию, которая копирует строку на место другого строки и возвращает признак того, что...

Определить сколько баллов ещё необходимо получить чтобы выступление на олимпиаде считалось успешным
Успешное выступление C++ ограничение по времени на тест: 1 секунда ограничение по памяти на...

а как думаете, можно ли стать ХОРОШИМ програмером абсолютно самостоятельно?
я не к тому что хочу попробывать. всё равно пойду на кодера. ну а ваше мнение?

141
 Аватар для Recrut_rf
392 / 337 / 66
Регистрация: 14.10.2014
Сообщений: 1,538
26.01.2026, 19:50
Студворк — интернет-сервис помощи студентам
Господа, те, кому по "долгу службы" приходится упарываться производительностью, пишут не для всяких "форточек" от Microsoft и прочих пингвиньих сборок. А под вполне конкретные операционки. В числе которых:
QNX Neutrino, VxWorks, FreeRTOS. Возможно есть и другие. И вот удивительно
Цитата Сообщение от Royal_X Посмотреть сообщение
на мой взгляд, фреймворков - Qt - значительно проигрывает в производительности
в Qt есть сборка для QNX - самому как то приходилось работать в такой связке. И ничего не тормозит - всё норм.
Правда у нас там графония не было - только вычислительные "мозги".
А если графика нужна - то нативные вещи конечно быстрее будут и, главное - меньше весить. Чем "весь" куте с собой в виде длл тащить ради пары окон.

Но опять же - если разработка коммерческая - то проще использовать тот же Qt для графики, чем WinAPI. Скорость разработки вырастет на порядки!
А про лицензии, как сказал один коллега на проекте - в текущей обстановке - да плевать нам на их лицензии. Они первые нас кинули!
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
26.01.2026, 20:14
Verevkin, а какое приложение с поддержкой FTP используешь для смартфона?

На моем стареньком телефоне Asus есть прикольная штука в родном менеджере файлов. Подключаешь телефон к одному и тому же Wi-Fi, что и компьютер, и запускаешь на телефоне эту штуку. На телефоне выводится адрес. Набираешь в браузере на компе и можешь лазить в файлах телефона. Причем, работает даже в Wi-Fi без интернета, типа пустой hotspot.
И не нужно FTP настраивать на винде.
0
Злостный нарушитель
 Аватар для Verevkin
10918 / 5846 / 1289
Регистрация: 12.03.2015
Сообщений: 26,955
26.01.2026, 20:27
Цитата Сообщение от Royal_X Посмотреть сообщение
а какое приложение с поддержкой FTP используешь для смартфона?
Тотал коммандер.

1
Злостный нарушитель
 Аватар для Verevkin
10918 / 5846 / 1289
Регистрация: 12.03.2015
Сообщений: 26,955
26.01.2026, 20:36
Цитата Сообщение от Royal_X Посмотреть сообщение
И не нужно FTP настраивать на винде.
Я FTP не только для телефонов использую. У меня дома много компов и 2 смарт-тв исчо. Короче, в сети много хостов и у них у всех есть двухсторонний доступ к FTP-серверу для обмена файлами. Пока меня это устраивает. Перестанет устраивать - сделаю что-то другое.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
26.01.2026, 20:38
Recrut_rf, вообще в приложениях про графику чаще используют не всякие классические окна и прочее, а библиотеки с immediate mode. Если приложения на WinAPI или на всяких фреймворках типа Qt, wxWidgets и пр. обновляют окно (перерисовывают) только тогда, когда это нужно, то в библиотеках с immediate mode окно обновляется на каждом кадре. Т.е. работает тот же принцип, что и в играх и частота обновления меряется в тех же FPS. У каждого подхода есть свои преимущества и недостатки.
Например, преимущество библиотек с immediate mode в том, что интерфейс рендерится на GPU и используются графические апи типа DirectX, Vulkan, OpenGL и т.д. Взаимодействие с интерфейсом плавное.
Из недостатков - высокое использование системных ресурсов. Даже во время бездействия окно загружает CPU / GPU.
Наверное, самая знаменитая из таких библиотек это Dear ImGui.
В классических же окнах использование системных ресурсов минимально, посколько окно перерисовывается только по команде, причем, апи винды (и фреймворков, которые его использует) позволяет перерисовывать даже отдельные прямоугольники, а не все окно.
3
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,376
26.01.2026, 21:44


Название: NewPicture8.png
Просмотров: 343

Размер: 4.2 Кб
Вот такую я ещё штуку эксплуатировал. Она запоминает адреса.
Просто пара кликов и можно рыться в телефоне.
0
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,376
26.01.2026, 21:46

На телефоне сервер - ES_Explorer
Цитата Сообщение от Verevkin Посмотреть сообщение
двухсторонний доступ
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
26.01.2026, 22:30
Наталья8, у Total Commander на андроиде тоже есть такая фича. Плагин называется WiFi/WLAN Plugin for Totalcmd. Эта штука тоже позволяет передавать файлы из смартфона на ПК или на другое устройство. Собсна, при передаче отправляющее устройство дает ссылку, которую можно набрать в любом браузере (на другом телефоне или на ПК).
Единственный недостаток данного плагина, что он не позволяет передавать в обратном направлении, т.е. из ПК на смартфон.
Но я не использую Total Commander на андроиде.

Я вот вообще QuickShare использую. Работает в обе стороны.
Это официальная штука от андроида https://www.android.com/intl/e... share-app/

Наталья8, кстати, в гугл плей есть очень много файловых менеджеров, которые делают телефон ftp сервером и дают ссылку, начинающую с ftp://, а также имя пользователя и пароль. Эту ссылку нужно набрать в Проводнике винды. И потом ты видишь все файлы на смартфоне.
Причем, для этого не нужно даже включать в компонентах винды IIS. Последний нужно включить только тогда, когда хочешь на винде создать ftp сервер без стороннего ПО.
Но некоторые приложения дают не ftp:// ссылку, а ссылку для браузера. В первом случае, ты работаешь в Проводнике, во втором в браузере. Например, плагин тотала для андроид, про который я писал вышел, дает ссылку для браузера.
1
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,376
27.01.2026, 13:57
Да в курсе я телефона... Пару штук память убил...
(Оптимизация телефона заканчиваеться убитой памятью.)
Столько много не надо. Хватает одной зелёной трубы кстате на Qt написана.
Это мне злодеи на роутере передачу запретили (роутер ихний. В аренде у меня)
Я начал ковырятся - программы искать.

Добавлено через 4 минуты
Цитата Сообщение от VTsaregorodtsev Посмотреть сообщение
Да, фигню.
Раз целые значения в кейсах в свитче идут подряд - можно использовать их как индексы строк массива:
Почему мой код гавно.? Я покапался в интуиции. Сначала пишеться что бы он работал.
Как будет работать, потом от скуки будем оптимизировать.
(Какой то умный писал - преждевременная оптимизация - зло.)
0
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,376
27.01.2026, 14:04

Я уже ускорение привинтил.
Как будет свободное время, будем проверки писать и до ума доводить.
C++
1
2
3
4
5
6
7
newFrame->pict_type = AV_PICTURE_TYPE_NONE;
            
// Здесь можно воровать кадры, убыстрять видео...          
            if (frame_count % cut_frames == 0) {
                newFrame->pts = ++ost.next_pts;
                encode_write_frame(out_fmt_ctx, ost, newFrame);
                       }
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
27.01.2026, 23:01
Цитата Сообщение от Наталья8 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
case WM_COMMAND: {
        UINT wId = LOWORD(wParam);
        char lit[4]{};
        GetWindowTextA(GetDlgItem(hwnd, EDIT_UP_DOWN), lit, 4);
    if (wId == IDC_BUTTON1) {
        if(check_and_store(lit) >= 0)// Это всё развалиться, а число мы сохраним в той функции...
            EndDialog(hwnd, wId);
        }
    if (wId == IDC_BUTTON2) {
        if (check_and_store(lit) >= 0)
            EndDialog(hwnd, wId);
        }
    if (wId == IDC_BUTTON3) {
        if (check_and_store(lit) >= 0)
            EndDialog(hwnd, wId);
        }
    if (wId == IDC_BUTTON4) {
        EndDialog(hwnd, wId);
    }
              }
             break;
Не советую так захламлять главную процедуру. В кейсах свитча главной процедуры пиши минимально кода:
C++
1
2
3
case WM_COMMAND:
        onButtonClick(wParam);
        break;
А потом просто создай
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void onButtonClick(WPARAM buttonID)
{
    if (HIWORD(buttonID) == BN_CLICKED)
        switch (LOWORD(buttonID))
        {
        case IDC_BUTTON1:
        {
            //
        }
        break;
        default:
            break;
        }
}
1
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,376
28.01.2026, 14:05
clip_n(2).mp4
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
28.01.2026, 14:14
Наталья8, тут мы уже ее обсуждали Тестирую нейросеть: Сделал песню про пограмиста Сейчас она сделала всякие инвестиции, купила ферму.
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
28.01.2026, 19:24
Ух, как в старые добрые времена, не то что слушать бредни ИИ. Недавно ИИ убеждал знакомого товарища, что это он бредит (товарищь, а не ИИ). Прочитал всё, и про ускорение Case и про то, что Rust заржавел, и что до сих пор не готов Сапер в разработке, мы ждали его всем сообществом, горячо обсуждали. Я признаюсь честно, много пропустил, но, вроде, всё без сильных изменений.
0
 Аватар для bedvit
1210 / 261 / 22
Регистрация: 20.05.2016
Сообщений: 1,147
Записей в блоге: 22
28.01.2026, 19:41
Цитата Сообщение от Наталья8 Посмотреть сообщение
на winapi можно даже красивее...
Подсказки многострочные.
Всплывающие подсказки можно и с заголовком на WinApi
0
 Аватар для Наталья8
639 / 397 / 68
Регистрация: 09.03.2016
Сообщений: 4,376
28.01.2026, 22:51

Да да... Что то было подобное я долго ковырял эту фигню.
На ниспадающем меню.
Мусора где то надёргал и доводил до ума.
Подсказки необходимы, а то забудешь на что нажимать.
0
1412 / 877 / 93
Регистрация: 08.02.2017
Сообщений: 3,740
Записей в блоге: 2
29.01.2026, 01:57
Цитата Сообщение от bedvit Посмотреть сообщение
Rust заржавел
Там нету goto, ерунда какая-то )
0
9993 / 2965 / 497
Регистрация: 05.10.2013
Сообщений: 8,150
Записей в блоге: 244
18.02.2026, 18:02
Цитата Сообщение от Royal_X Посмотреть сообщение
Из недостатков - высокое использование системных ресурсов. Даже во время бездействия окно загружает CPU / GPU.
Да, это верно для поведения по умолчанию, но есть способ это обойти с помощью активации вертикальной синхронизации (Vsync). Не знаю, как в других библиотеках, но в SDL3 активировать VSync можно прямо из кода, добавив всего одну строку кода:

C++
1
SDL_SetRenderVSync(renderer, 1);
У меня есть старый ноутбук 2011 года для тестирования (Asus K53SV) с процессором 2-ого поколения i3-2310. Если, к примеру, НЕ активировать VSync, то библиотеки для окна - SDL, SFML, GLFW и т.д. будут даже в бездействии действительно сильно нагружать CPU на 27-30%, но если активировать VSync, то нагрузка CPU всего ли 2-3%. Это пренебрежимо мало, можно сказать - в пределах погрешности даже на таком старом ноутбуке.

Протестировал на стационарном компьютере. Окно SDL3 без VSync нагружает CPU на 0.8%, но встроенное графическое ядро нагружается на 33.3%:



Если активировать VSync, то CPU нагружается на 0.2%, а CPU на 3.6%:



Я прикрепил два архива с EXE. В одном архиве не активирована VSync, а другом активирована. Собрал с помощью MinGW GCC 11.2 и CMake из консоли. Взял код из официального примера SDL3 - clear.c. Код на C, но его просто переделать на C++, например, с помощью Gemini. Перевёл комментарии на русский с помощью Gemini и добавил активацию вертикальной синхронизации. Уточню, что при включении вертикальной синхронизации частота главного анимационного цикла (или игрового цикла) приложения будет совпадать с частотой обновления на мониторе, то есть если монитор 60 Гц, то функция SDL_AppIterate() будет вызываться 60 раз в секунду:

main.c

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/*
 * Этот пример кода создает окно и рендерер SDL, а затем очищает
 * окно разным цветом в каждом кадре, так что вы фактически получите окно,
 * цвет которого плавно меняется.
 *
 * Этот код является общественным достоянием. Не стесняйтесь использовать его в любых целях!
 */
 
#define SDL_MAIN_USE_CALLBACKS 1  /* использовать функции обратного вызова вместо main() */
#include <SDL3/SDL.h>
#include <SDL3/SDL_main.h>
 
/* Мы будем использовать этот рендерер для отрисовки в этом окне в каждом кадре. */
static SDL_Window *window = NULL;
static SDL_Renderer *renderer = NULL;
 
/* Эта функция запускается один раз при запуске. */
SDL_AppResult SDL_AppInit(void **appstate, int argc, char *argv[])
{
    SDL_SetAppMetadata("Example Renderer Clear", "1.0", "com.example.renderer-clear");
 
    if (!SDL_Init(SDL_INIT_VIDEO)) {
        SDL_Log("Couldn't initialize SDL: %s", SDL_GetError());
        return SDL_APP_FAILURE;
    }
 
    if (!SDL_CreateWindowAndRenderer("examples/renderer/clear", 640, 480, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
        SDL_Log("Couldn't create window/renderer: %s", SDL_GetError());
        return SDL_APP_FAILURE;
    }
    SDL_SetRenderLogicalPresentation(renderer, 640, 480, SDL_LOGICAL_PRESENTATION_LETTERBOX);
 
    SDL_SetRenderVSync(renderer, 1);
 
    return SDL_APP_CONTINUE;  /* продолжаем выполнение программы! */
}
 
/* Эта функция запускается, когда происходит новое событие (ввод мыши, нажатия клавиш и т. д.). */
SDL_AppResult SDL_AppEvent(void *appstate, SDL_Event *event)
{
    if (event->type == SDL_EVENT_QUIT) {
        return SDL_APP_SUCCESS;  /* завершаем программу, сообщая ОС об успешном завершении. */
    }
    return SDL_APP_CONTINUE;  /* продолжаем выполнение программы! */
}
 
/* Эта функция запускается один раз за кадр и является сердцем программы. */
SDL_AppResult SDL_AppIterate(void *appstate)
{
    const double now = ((double)SDL_GetTicks()) / 1000.0;  /* преобразуем миллисекунды в секунды. */
    /* выбираем цвет для кадра, который будем рисовать. Трюк с синусоидой заставляет цвета плавно сменять друг друга. */
    const float red = (float) (0.5 + 0.5 * SDL_sin(now));
    const float green = (float) (0.5 + 0.5 * SDL_sin(now + SDL_PI_D * 2 / 3));
    const float blue = (float) (0.5 + 0.5 * SDL_sin(now + SDL_PI_D * 4 / 3));
    SDL_SetRenderDrawColorFloat(renderer, red, green, blue, SDL_ALPHA_OPAQUE_FLOAT);  /* новый цвет, полная непрозрачность. */
 
    /* очищаем окно цветом отрисовки. */
    SDL_RenderClear(renderer);
 
    /* выводим свежеочищенный рендер на экран. */
    SDL_RenderPresent(renderer);
 
    return SDL_APP_CONTINUE;  /* продолжаем выполнение программы! */
}
 
/* Эта функция запускается один раз при завершении работы. */
void SDL_AppQuit(void *appstate, SDL_AppResult result)
{
    /* SDL сама очистит окно/рендерер за нас. */
}
CMakeLists.txt

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cmake_minimum_required(VERSION 3.21)
project(clear-mingw-sdl3-c)
 
# Задаем название будущего приложения (в Windows это был бы app.exe, а в вебе будет app.js / app.wasm)
add_executable(app)
 
# Устанавливаем стандарт C
set(CMAKE_C_STANDARD 11)
 
# Подсказываем CMake, где искать конфигурационные файлы библиотеки SDL3
set(SDL3_DIR "H:/libs/SDL3-devel-3.4.0-mingw/lib/cmake/SDL3")
 
# Загружаем настройки пакета SDL3 (параметры компиляции и пути к заголовкам)
find_package(SDL3 REQUIRED)
 
# Привязываем SDL3 к нашему приложению (настройка линковки и путей include)
target_link_libraries(app PRIVATE SDL3::SDL3)
 
# Добавляем исходный код к проекту
target_sources(app
    PRIVATE
    src/main.c
)
Во всех официальных примерах используются 4 функции (см. код выше и читайте комментарии к функциям). Это удобно, потому что позволяет компилировать один и тот же код на C/C++ для запуска исполняемых файлов на Desktop (Windows, Linux, iOS), Mobile (Android, iOS) и Web (WebAssembly) без изменения кода.

Для сборки прикреплённого примера clear-mingw-sdl3-c.zip в EXE нужно добавить папку MinGW GCC 11.2 в PATH, установить CMake (https://cmake.org/download/), в прикреплённом проекте в файле CMakeLists.txt изменить путь к папке SDL3-devel-3.4.0-mingw на ваш путь, а папку прикреплённую папку SDL3-3.4.0-win32-x64 добавить в PATH (это папка с SDL3.dll). Потом в корне проекта в консоли набрать три команды:
Bash
1
2
3
config-exe
build-exe
run-exe
Это батники, которые сконфигурируют, скомпилируют и запустят приложение. Приложение плавно меняет цвет фона области рисования окна, как это сделано в примере clear.c в официальном репозитории SDL3.



Проект можно открыть в Qt Creator, если при открытии выбрать файл CMakeLists.txt, ставить точки останова и отлаживать по шагам. Qt Creator можно скачать отдельно от фреймворка Qt на GitHub: https://github.com/qt-creator/qt-creator/releases Я считаю, лучше программировать в редакторе кода без автодополнений кода, чтобы набирать руками и не лениться, полагаясь на автодополнение кода - так вдумчивее набираешь код и лучше его запоминаешь, что помогает быстрее думать. Можно использовать очень легковесные редакторы кода Nodepad++ или Sublime Text 4: https://www.sublimetext.com/download Мне больше нравится Sublime Text 4, чем Nodepad 4, потому что лучше подсветка кода и лучше организация файлов.

Миниатюры
Вложения
Тип файла: zip SDL3-devel-3.4.0-mingw.zip (2.65 Мб, 0 просмотров)
Тип файла: zip SDL3-3.4.0-win32-x64.zip (1.09 Мб, 0 просмотров)
Тип файла: zip clear-mingw-sdl3-c.zip (3.4 Кб, 0 просмотров)
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6697 / 3097 / 1064
Регистрация: 01.06.2021
Сообщений: 11,977
18.02.2026, 18:11
8Observer8, включение вертикальной синхронизации может помочь снизить нагрузку, поскольку кроме самой синхронизации, данная функция ограничивает fps, не разрешая ей обрабатывать больше кадров, чем fps монитора. Но порой даже fps монитора излишне, поэтому иногда лучше ограничить fps ещё жёстче (т.е. выставить ниже fps монитора).
По этой причине, я в своей игре https://royalxxx.itch.io/chess-3d кроме включения/отключения vsync, реализовал также ограничение fps на кастомное значение. Даже если у человека монитор на 120 или 144 Гц (или выше), он может выставить ограничение fps на 30 или 60 - для шахмат этого достаточно. Это позволит зря не нагружать GPU.
Вообще, я считаю, что реализация ограничения fps в играх и приложениях, где прорисовка выполняется каждый к кадр, это must have фича. Vsync это хорошо, но лучше и ограничение fps реализовать.
1
9993 / 2965 / 497
Регистрация: 05.10.2013
Сообщений: 8,150
Записей в блоге: 244
18.02.2026, 18:57
Цитата Сообщение от Royal_X Посмотреть сообщение
включение вертикальной синхронизации может помочь снизить нагрузку
Не то что включение VSync иногда может помочь чуть-чуть снизить нагрузку на мониторах 60 Гц, а она 100% на порядок её снижает на моём ноутбуке 2011 года, то есть в 10 раз - было 30% CPU, а стало 2-3% на i3-2310. Скорее всего так происходит даже на современных слабых бюджетных ноутбуках. К сожалению, у меня нет монитора 100 Гц и выше, но у кого есть может скачать мои EXE из сообщения выше посмотреть сколько % CPU и GPU. Может быть на 144 Гц вдруг встроенная графика подскочит до 30% на GPU или это произойдёт на 240 Гц. А если даже на 144 Гц или тем более 240 Гц будет так же 1-2% CPU и GPU, то этим можно пренебречь. Пока для меня этот вопрос открытый - как поведёт себя VSync на 240 Гц. Может это критично в студийных AAA-играх - не знаю.

Цитата Сообщение от Royal_X Посмотреть сообщение
Но порой даже fps монитора излишне, поэтому иногда лучше ограничить fps ещё жёстче (т.е. выставить ниже fps монитора).
Можно поступить ещё жёстче - вообще не использовать анимационный (игровой) цикл. Например, если взять Qt и Vulkan/OpenGL, то функция paintGL() будет по умолчанию вызываться, когда системе нужно отрисовать окно. Можно передвигать фигуры в шахматах без анимации и инициировать перерисовку игрового поля по собственному требованию, когда мы изменили положение фигур. В SDL3 пробовал понижать FPS до любого значения - 1, 2, 3, 10, 20 FPS с помощью функции SDL_Delay(), но это даёт настолько копеечный прирост производительности на уровне пусть 1-2% по сравнению с VSync. Я так ограничивал FPS вплоть до 1 FPS на SDL2:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
const float maxFPS = 1.f;
 
int main()
{
    /* ... */
    bool running = true;
    while (running)
    {
        float startTicks = SDL_GetTicks();
        // Drawing ...
        // Limit the FPS to the max FPS
        float frameTicks = SDL_GetTicks() - startTicks;
        if (1000.f / maxFPS > frameTicks)
        {
            SDL_Delay(1000.f / maxFPS - frameTicks);
        }
    }
    /* ... */
}
Я в ноябре 2022 года задавал вопрос на официальном форуме GLFW, как ограничить FPS на GLFW, потому что там нет функции SDL_Delay(). В GLFW тоже это можно сделать, но с ещё большими костылями, чем SDL_Delay(). Пока не вижу в этом смысла, потому что VSync спасает, но требуется тестирование на мониторах более 60 Гц. Правда, всё равно, действительно, ощущение что даже это цикл 60 раз в секунду крутится и это тратит ресурсы, но эти траты же пренебрежимо малы даже на ноутбуке 2011 года.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2026, 18:57

Как стать крутым программистом?
Ja tut pocital forum, i toze hociu stat krutim programistom, i neprosto programirovat, a umet iskat...

Как стать экспертом в C++?
Как стать экспертом в C++?

Как стать программистом
В общем ситуация такая, изучаю с++(почти год) и с# пару месяцев. Вот задумался что я должен знать и...

Как стать хорошим программистом?
Здравствуйте Уважаемые программисты.. Я учусь на 2 курсе на ИСИТ... И Я люблю программировать и это...

Как стать программистом сетевых устройств
Добрый день! Программирую микроконтроллеры на языке Си и С++ Хочу освоить новую область -...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru