Задать вопрос
  • Загрузка 3д моделей Opengl?

    Дмитрий, он там этого не найдет. Ты только зря потратил свое время на создание необоснованной и ложной догадки.
  • Загрузка 3д моделей Opengl?

    Zorroti
    Здравствуйте.

    П3.4 регламента работы сервиса. И нет, здесь это не является признаком культуры.

    Насколько я вижу, ты довольно неохотно ставишь решения на ответы с решениями. Поэтому от меня ответа не будет. Взамен я просто коротко расскажу как это делается.
    Сперва тебе надо обратиться к документации на блендер и изучить его API для экспорта. Будет хорошо если в этот период ты напишешь несколько плагинов к блендеру, которые будут выгружать модель в какой-нибудь текстовый формат. JSON, XML, это не важно. Важно чтобы ты научился работать с API экспорта.
    Потом тебе надо обратиться к документации OpenGL и изучить механизмы взаимодействия с ним. Будет хорошо если в этот период ты напишешь несколько полноценных проектов со сценой, материалами и пайплайном рендеринга. Важно чтобы ты на этом этапе усвоил что и в каком порядке OGL требует чтобы нарисовать модель.
    После этого у тебя сложится понимание того, как геометрию из блендера через плагин экспорта перетащить в формат файла, который далее твой код на C прочитает и начнет использовать для отрисовки сохраненной в нем модели.
  • Как имея позицию и направление двух объектов в пространстве координат y, x, z, повернуть один объект в другой?

    gazes12, локальная система координат в самом прямом смысле означает локальную систему координат. :)
    Для того самого объекта, который тебе надо вращать, локальной будет система координат с центром в точке вращения объекта. Все вектора внутри этой системы отсчитываются все так же от нуля, но уже от нуля этой локальной системы координат. Поэтому я и говорю о нуль-векторах. Еще нуль-вектора называют лучами или вектор-направлениями. Лучи всегда исходят из центра координат и описываются только своим направлением. При этом, любое из произведений выполняется для двух векторов, но использует и центр координат (нули) как третий вектор.
    Косинус - это отношение прилежащего катета к гипотенузе прямоугольного треугольника. Один вектор скалярного произведения описывает катет, второй вектор - гипотенузу. В центре координат находится вершина этого треугольника. Косинус этого угла определяется через скалярное произведение этих векторов.
    Там же, в центре координат, находится и точка происхождения и вектора нормали, который получается в результате векторного произведения. Нормаль - такой же луч и точно так же описывается только своим направлением.
    Матрицы трансформации как раз и используются для переходов между локальными и глобальными системами координат. Та самая SRT-матрица определяет сразу три, вложенные друг в друга, локальные системы координат: ниже всех система масштабирования, над ней - вращения, а над ней - трансляции. И именно поэтому порядок операций при получении правильной SRT-матрицы так важен.

    У тебя есть текущие координаты твоего объекта A, который тебе надо вращать. Это координаты в глобальной системе координат, в мировой системе, пожалуй. Они для операции не подойдут. Тебе подойдет, допустим, направление оси X из SRT матрицы этого объекта. Этот нуль-вектор будет находиться в локальной системе координат объекта A. Для того чтобы навести объект A на объект B, его текущие координаты в глобальной системе координат нужно перевести в локальную систему объекта A. Минимально это можно сделать через простое вычитание координат объекта A из координат объекта B. Полученные локальные координаты объекта B нужно нормализовать.
    И уже эти два полученных нуль-вектора можно использовать для вычисления угла поворота и направления вращения.
  • Где ошибка в работе вершинного шейдера?

    @MarkusD Куратор тега C++
    Павел Соколов, иными словами, ты рассчитываешь что заданные тобой позиции вершин должны дойти до пиксельного шейдера без трансформации? Твой код сейчас работает иначе.
    Твоя красная точка - это и есть твой треугольник. "Debug -> Graphics -> Start Graphics Degugging", сделай захват кадра и проверь что треугольник у тебя рисуется.
    Твой треугольник рисуется в пространстве координат поверхности экрана и занимает немногим меньше одного пикселя. Сложно сказать почему твой код ведет себя так. На этот процесс влияет даже настройка вьюпорта. Среди функций устройства есть много кандидатов на то, чтобы понести ответственность за результат у тебя.
    Лог из захвата кадра может сильно помочь в понимании причин. Если по этому логу еще будет не понятно, то скинь сюда данные стадии вершинного и пиксельного шейдера из захвата. Там есть информация о том, какие координаты пришли на вход и какие - ушли на выход.
  • Где ошибка в работе вершинного шейдера?

    @MarkusD Куратор тега C++
    Павел Соколов , это не с вершинами что-то не так. Но все по порядку.
    Покажи кодом, как именно ты задаешь вершины треугольника.
  • Какие есть способы скрытого(от запущенных программ) чтения содержимого оперативной памяти в Windows 10?

    VoidVolker, принцип работы WinMemApi довольно прозрачен для целевого процесса и очень легко определяется прямо изнутри процесса. Там же, и так же легко, купируется. Но даже на этом уровне уже требуется быть подготовленным специалистом в разработке чтобы пользоваться этим API.
    BE обладает собственным драйвером уровня ядра и на более глубоком уровне отслеживает вмешательство в целевой процесс. Процесс создания контрмеры для BE от специалиста требует глубоких профессиональных навыков и понимания принципов функционирования целевой оси. Такое понимание человек может обрести только работая у майков в команде разработки оси. Разработчики BE консультируются у майков по подобным вопросам.

    В этом плане автор хочет странного. Ни знаний, ни навыков у него нет вообще, но вот сделать прям сча и чтобы работало ему очень хочется. Но вот чтобы посмотреть на топологию памяти и для обучения, ему это все не нужно. На этом основании я его вопрос и оставляю без ответа.
  • Как объединять несколько языков одном проекте?

    Keith Griffon
    C++ я решил взять из-за скорости, чтобы не тупило приложение, kotlin решил взять потому что я пишу приложение-мессанджер, а php будет серверной частью

    А почему эти, крайне существенные для вопроса, знания вскользь размещены среди всего богатства комментариев?

    Тебе стоит переформулировать свой вопрос. В нем нужно написать: что именно ты хочешь сделать, почему именно эти языки ты выбираешь, как ты хочешь использовать выбранные языки и в каких местах, по твоим соображениям, проекта должны быть точки стыковки между языками.
  • Как правильно оформить присваивание значения возвращаемого из функции C++?

    @MarkusD Куратор тега C++
    Wataru, а вот так:
    Matrix out{ Transpose( in ).Inverse() };
    Это при том, что метод Inverse может иметь сигнатуру Matrix& Matrix::Inverse(); и возвращать *this для того чтобы позволить Method chaining для объекта матрицы.

    И ровно в это же время для кода Matrix out{ Transpose( in ) }; будет вызван не конструктор копирования, а именно конструктор перемещения, аргументом которого является Matrix&&. Такое приведение невозможно для константных объектов. А prvalue можно использовать для инициализации rvalue reference.
  • Как правильно оформить присваивание значения возвращаемого из функции C++?

    @MarkusD Куратор тега C++
    Wataru
    В него нельзя писать, но его можно читать. Оно const.

    Вот тут неправда.

    Понимание этого тонкого момента зависит от понимания категорий выражений в языке.
    Для метода Matrix Transpose(Matrix &Mat) будет возвращено локальное временное значение с категорией prvalue.
    Значения с такой категорией лишены идентичности, динамического типа и размещения. Их нельзя передать по неконстантной ссылке. Читать и писать в него можно при этом.
    Именно поэтому у автора транслятор не может найти подходящий оператор. У него и копирование сделано через оператор разрушающего копирования, и метод транспонирования может модифицировать состояние аргумента. А это - в корне неправильно.
  • Достаточно ли будет чтения cppreference для освоения STL?

    @MarkusD Куратор тега C++
    Joe Doe, ну тут ситуация от обратного. :)
    Я очень рад что мне удалось помочь, но в списке ответов у меня в профиле мне такой не нужен. Это потому что я не могу выразить весь этот текст в более удачной для решения вопроса форме. Мой комментарий - это как будто простое уточнение к уже изложенным ответам.
  • Достаточно ли будет чтения cppreference для освоения STL?

    @MarkusD Куратор тега C++
    Joe Doe, для начала, неплохая книга. С нее можно самые азы работы с языком понять.
    Отвлечемся немного от формулировки вопроса.

    Суть работы инженера состоит в оперировании документами и в решении своей рабочей задачи через связи между документами. Основным инструментом работы инженера П.О. является именно набор документов: стандарт языка, документация и т.н. пояснительная литература в виде книг и справочников. Это все означает что все вот эти источники информации с тобой теперь навсегда в твоей трудовой жизни. Бесконечно рыться в недрах cppreference при решении своей задачи - это в порядке вещей.
    Просто читать cppreference на твоем этапе можно. И этого даже хватит для составления своих представлений. Для общего понимания будет достаточно просто глазами пробежаться по разделам библиотеки и понять что в ней вообще есть. И вот когда будешь решать конкретную задачу, ее подзадачи должны у тебя начать встречаться с известными тебе элементами стандартной библиотеки. В этот момент уже можно идти на cppreference и прямо детально читать контейнеры, алгоритмы, черты, конкурентность и так далее.

    С беглым обзором STL тебе еще поможет самое начало вот этой книги. Сразу сходу углубляться в нее не стоит, там описывается довольно много глубоких подробностей языка. Или, вот еще книга, по которой почти 20 лет назад учился я. Лучше тоже только самое начало затронуть.
  • Как избавится от постоянного индексирования файлов движка в Rider for ue?

    SlimShhady
    Здравствуйте!

    П3.4 регламента работы сервиса: Вопрос и его описание не должны содержать приветствий и прочих «лирических отступлений».

    подскажите можно ли как-то избавится от частого индексирования файлов движка?

    П2.3 регламента: Публикация вопросов, компетентно ответить на которые могут только представители конкретной организации, неизбежно приводит к провокации нарушений п. 3.4, 5.14 - 5.17 правил данного Сервиса.
  • Конструктор не создает переменную внутри класса. что делать?

    @MarkusD Куратор тега C++
    artempawww, да всё у тебя в коде не так.
    int massive[] = {1,2,3}; - опиши словами, что ты хотел этой строчкой сделать и что эта строчка делает на самом деле?
    cout << this->massive; - аналогично, что ты хотел сделать и что эта строчка делает на самом деле? Дополнительно, откуда у this должно появиться поле massive и что такое в этом месте this?
  • Зачем нужен отдельный синтаксис для препроцессора?

    @MarkusD Куратор тега C++
    Марат Нагаев, для инженера ПО, и программиста в частности, не существует занудства. Для инженера ПО существуют только стандарты используемых им инструментов и разные уровни экспертизы в этих стандартах.
    И если для тебя человек с большей экспертизой в стандарте инструмента C++ является занудой, я порекомендую тебе пересмотреть свою систему ценностей. Ты ошибаешься очень сильно. :)
    Но тем не менее, я тебя понял в некоторой мере. Ответ дам завтра. Но он тебе не понравится, хоть и будет полностью решать твой вопрос.
  • Зачем нужен отдельный синтаксис для препроцессора?

    @MarkusD Куратор тега C++
    Марат Нагаев, все верно, в это же время #if и не работает на стадии компиляции кода.
    В этом плане я тебя совсем не понимаю. Препроцессор работает до стадии компиляции и работает он с совершенно другим контентом. Но ты рассуждаешь о стадии компиляции, на которой работают конструкции constexpr и consteval.
    Поэтому я пока не могу считать что ты ответил на мой вопрос. Про препроцессор сейчас не говорим, сейчас говорим только про constexpr и consteval. Чем же они тебя не устроили? Почему тебе нужно что-то другое, а не то что уже есть?
    Мне нужен твой ответ, каким бы он ни был. Думаю, после твоего ответа я смогу дать уже свой ответ на твой вопрос.
  • Зачем нужен отдельный синтаксис для препроцессора?

    @MarkusD Куратор тега C++
    Марат Нагаев,
    я хотел что-то вроде compiled-time, но это слишком громоздко

    А чем тебя constexpr[?] и consteval[?] не устроили?