• Почему даже default не срабатывает в switch?

    @MarkusD Куратор тега C++
    Андрей Семейкин, у switch единая область видимости для всех case. И ты в этой области определяешь переменные.
    Вот давай подумаем с тобой вместе, что произойдет если управление со switch прыгнет в case, в котором видна переменная, объявленная выше этого case?
    Определяет ли стандарт C++ поведение в такой ситуации?
  • Как записать в переменную типа char строку неизвестной длины из файла?

    @MarkusD Куратор тега C++
    lilyayrn , в чем конкретно у тебя проблема?
    Вот ты открыл файл (кстати, как ты его открыл?), вот у тебя есть его дескриптор. Бери да читай.
    В какой момент и на какой строчке кода у тебя возникает проблема?

    Тебе тут сейчас советов отсыпят на любой вкус. Я тебе предлагаю научиться думать как инженер. А для этого надо ответить на мои вопросы.
  • WxWidgets Debug Alert - как убрать?

    @MarkusD Куратор тега C++
    michadimin
    Казалось бы, всё элементарно

    Казалось бы, все элементарно - просто соблюдать П3.8 регламента работы сервиса.

    Код нужно оформить правильно. Этот самый Debug Alert из диалогового окна копируется простым Ctrl+C. Вставить сюда рекомендую тоже как код.
  • По какой причине здесь возникает ошибка?

    @MarkusD Куратор тега C++
    キム ファイブプラス, так нельзя. Но автор очень настойчиво пытается уже около года.
  • Можете по рекомендуйте простой движок для разработки 2д игры?

    ReDeNDeR, в теге прямо следующий же вопрос спрашивает ровно то же самое.
    И это при том, что там человек тоже нарушил П2.3 регламента, потому что его вопрос ровно так же повторяет уже заданный и решенный.
    И оба эти вопроса, как выходит, полностью покрывают твой вопрос.
  • Можете по рекомендуйте простой движок для разработки 2д игры?

    Какие предпосылки в вопросе подтолкнули посоветовать не движок, а фреймворк на конкретном языке и без готовой интеграционной среды?
  • Почему именно при таком обращении к матрице мы получаем все ее элементы?

    @MarkusD Куратор тега C++
    LevSvl08 , я так понимаю, объявление matrix - это секрет, которым ты с нами не поделишься?
  • Почему не получается установить библиотеку dlib?

    Алан Гибизов
    Я просмотрел важную штуку: Python 3.8, а glib максимум 3.6 поддерживает.

    А ответом это не хочешь разместить? Решает же вопрос. И про студию тоже.
    Если коротко, то у товарища должна стоять нагрузка на разработку C++ приложений с использованием cmake.
    Детали расписывать у меня времени сейчас нет, иначе яб сам уже ответ оформил. По деталям смогут в теге "Visual Studio" помоч.
  • Какой можете посоветовать хороший 3D игровой движок под C++?

    @MarkusD Куратор тега C++
    Blohinidze Escobaro , а чем тебе не угодил уже готовый ответ в полностью таком же вопросе?
    2.3 регламента обязывает тебя убедиться в том, что твой вопрос не будет повторять уже заданный и, тем более, уже решенный вопрос.
  • Как погрузиться в начала/фундамент программирования?

    Данил , абсолютное большинство высококлассных программистов обладают всего одним ключевым качеством, которое и позволяет им писать код дальше.
    Я видел твои вопросы. У тебя этого качества нет. Поэтому у тебя и не получается.
    Но ты не беспокойся. Такими не рождаются.
    Для человека абсолютно всегда и абсолютно во всем характерна связь: Что качаешь - то и получаешь.
  • Какие компиляторы "принято" использовать в клиентских приложениях для разных платформ (Windows, MacOS etc)?

    @MarkusD Куратор тега C++
    floppa322, понимаешь...
    Ты очень близок в своих словах к правоте при современном порядке и при современных нравах. Так и есть. Довольно большая часть людей считает просто стандартом ту или иную технологию исходя из предпосылок. Просто все так делают и чем мы лучше остальных?

    И это неправильно. К этой ситуации нужно подходить критически. Я не хочу быть лентяем и вместе со всеми забвенно шагать ровной шеренгой в дивный новый мир. Твое решение находится в твоих руках.
    Плюс, если все протестировано клангом, то остальными протестировать нужно в буквальнейшем смысле. Это послужит только на благо стабильности продукта. Мы должны писать свой код исключительно в рамках стандарта, исключительно для удобства чтения этого кода нами же или нашими сотрудниками и добиваться однотипного поведения своего кода при сборке всеми популярными трансляторами языка.
    А иначе получится как на одной моей прошлой работе, где ребятки в пять лиц полгода исправляли дичайшие сбои просто при переходе с 2015й студии на 2017ю. Там люди просто не думают о том что я тут написал и живут так, как написал сейчас ты.

    Сложившийся порядок проверку временем не проходит. Его нужно менять на более критический и прагматичный подход. О таком подходе я и стараюсь рассказывать при каждой удобной возможности.
  • Какие компиляторы "принято" использовать в клиентских приложениях для разных платформ (Windows, MacOS etc)?

    @MarkusD Куратор тега C++
    floppa322, в цитате все правильно не смотря даже на то, что формально автор NDA нарушил и должен быть наказан как минимум двумя очень влиятельными компаниями.

    Именно так это и звучит. Задача: запустить код на платформе Mac. Исследование показывает что сборка кода на маке допускается только средствами среды Apple XCode, в составе которой используется не просто Clang LLVM, а Apple Clang - ответвление общего транслятора со своими внутренними правками под нужды платформы.
    Вывод исходя из задачи: Использовать для сборки кода среду Apple XCode и транслятор Apple Clang.

    MSCL более тесно связан с экосистемой майков и по определению генерирует более подходящий для экосистемы код. Если задача устанавливает такие требования, то использовать MSCL является верным решением.

    Это все и означает выбор инструмента от задачи. Просто сам выбор должен быть сделан не от балды, а в результате исследования предметной среды с целью соблюдения условий задачи.
  • Какие компиляторы "принято" использовать в клиентских приложениях для разных платформ (Windows, MacOS etc)?

    @MarkusD Куратор тега C++
    floppa322 , стандартом является только осознанный выбор конкретного транслятора исходя из условий задачи.
    Человека, который будет настаивать на чем-то одном, можно не слушать.

    Инструмент всегда выбирается от условий задачи.
    В своей работе я регулярно использую все три заявленных инструмента на равных условиях и для своих целей.
  • Как правильно организовать соприкосновения поверхностей при инстансинге?

    @MarkusD Куратор тега C++
    NimuraF
    Я вот просто никак не могу уложить эту идею в голове

    Это потому что сейчас у тебя что-то сделано, прямо скажем, неправильно. :)

    Для завершения своего прошлого этапа ты пришел к определенному решению и сделал определенные действия. Это привело к тому, что для тебя текущий твой этап стал нерешаемым стандартными методами.
    Это нормально. Так работает метод проб и ошибок.

    Тебе надо откатиться назад и решить прошлый этап иначе. Одна матрица на весь массив инстансов - это легкое решение, которое не решает ничего. В буквальном смысле ты закрыл себе дорогу к разным траекториям движения капель, к эффектам ветра, к определению столкновений капель. Много к чему.
    Эта матрица означает что весь массив капель является единым неразрывным объектом, с которым взаимодействовать можно только целиком.
    Матричное преобразование - тяжелая штука. Тебе же на CPU нужно работать с значениями aOffset, именно они у тебя сейчас обозначают физическую позицию каждой капли. Посчитать 2D координату проще даже для 200к инстансов чем посчитать матрицу и выполнить с ней операцию на всех инстансах. А передается твой буфер aOffset на GPU сравнительно так же быстро, как и та же матрица. Иными словами, матрица - это просто альтернативное решение. Неудачное альтернативное решение.
    Когда на CPU посчитаешь все 200 точек капель для очередной их отрисовки, у тебя появятся все нужные данные чтобы проверить коллизии каждой капли по отдельности все на том же CPU.
  • Как правильно организовать соприкосновения поверхностей при инстансинге?

    @MarkusD Куратор тега C++
    NimuraF, это потому что ты пробуешь определять столкновение в шейдере. :)
    А этого там делать совсем не нужно. Шейдер - для отрисовки уже готового состояния. Т.е. капля в момент отрисовки уже должна быть посчитана как столкнувшаяся. И или ты ее инстанс просто убрал из буфера, или для нее у тебя что-то такое заведено в атрибутах инстанса, что скажет шейдеру выкинуть весь примитив из дальнейшей обработки.

    Считай столкновения просто на CPU в отдельной функции до отрисовки. У тебя там будет очень простая математика пересечения двух отрезков или пересечения двух прямоугольников.
  • Как правильно организовать соприкосновения поверхностей при инстансинге?

    @MarkusD Куратор тега C++
    NimuraF, если тебя интересует только визуальная часть столкновения капли с препятствием и чтобы дальше капля не обсчитывалась, то это можно сделать примерно так. На выбор есть два варианта.
    Ты ведь все равно пересчитываешь позиции инстансов капель и каждый раз заново набиваешь буфер значениями. Просто при набивании буфера позиций инстансов выкидывай те капли, которые модель столкновений уже посчитала попавшими на поверхность. Набиваешь буфер позиций инстансов, запоминаешь его размер и используешь этот размер в glDrawArraysInstanced.
    Само событие столкновения, реакцию на него и порождение брызг можно сделать на CPU. И брызги, кстати, можно тоже инстансингом рисовать, а считать тоже в модели физики.

    Вот так
    if ((result.x < -0.5 && result.y > -0.5) || (result.x > 0.5 && result.y > -0.5) || (result.x >= -0.5 && result.x <= 0.5 && result.y > 0.5))
        gl_Position = result;

    отрисовку, ты уже понимаешь, не остановить. Вершинный шейдер остановить невозможно. discard можно применять только в пиксельном шейдере. Преждевременный return без установки gl_Position ведет к неопределенному поведению. gl_Position нужно всегда определять.
    Но мы в больших движках уже давно придумали выход из такой ситуации. Мы просто в таких случаях позиционируем вершину за пределами видимой области.
    gl_Position = vec4( -1.0, -1.0, -1.0, 0.0 ); не портит порядок обработки вершин. Если это сделать для всего примитива, то он будет выброшен из дальнейшей обработки целиком.
  • Не могу создать класс персонажа в UE5 на с++. Что делать?

    DoniUrano
    Всем привет.

    П3.4 регламента работы сервиса. Регламент ты перед написанием вопроса читал, соблюдать его согласился, но не соблюдаешь.

    Новичок в программировании, изучаю unreal, вместе с ним с++.

    Это взаимоисключающие направления. Сперва тебе надо получить достаточную квалификацию в C++. UE сложен сам по себе, а для тебя с ним работать сейчас вообще невозможно.

    логи я читать не умею, поэтому вообще не понимаю, что делать((.

    П5.12 регламента работы сервиса. Тут так нельзя. Переходи на фриланс, создавай задачу, назначай стоимость.
  • Почему не получается передать указатель на вектор в класс?

    @MarkusD Куратор тега C++
    Kryptonit, ну так запусти и выпиши сюда все ошибки, по которым у тебя вопросы.