Ответы пользователя по тегу DirectX
  • Что выбрать новичку: DirectX или OpenGL?

    OpenGL однозначно, вам и его хватит с головой.

    Изучая DirectX вы иссохнете от того, сколько сопутствующий вещей придётся узнать хотя бы поверхностно - COM например. Возможно кто-то скажет что это не обязательно - да, пока вам не понадобится более-менее серьёзно подебажиться.

    OpenGL выглядит сейчас как самое простое (проще Vulkan, т.к. более высокоуровневый), но при этом полноценное (т.е. достаточно близкое к железу) графическое API без всяких Windows-specific наворотов. DirectX это по сути для профессионалов которые работают в индустрии, получают за это хорошие деньги и для них не проблема разобраться с какой-то сопутствующей технологией.
    Ответ написан
    Комментировать
  • OpenGL или DirectX?

    Nipheris
    @Nipheris Куратор тега C++
    Зависит от ваших текущих знаний и пожеланий, особенно от того, насколько вы готовы разбираться с каждой их технологий.

    OpenGL это кроссплатформенное API, раньше было не очень удобно начинать работу с ним на Винде, сейчас доступны различные библиотеки (GLEW, GLFW) и это больше не проблема.
    DirectX возможно даст вам больше возможностей, но там много заморочек с Windows-специфичными вещами, т.к. DirectX работает через технологию COM. Поначалу будет непривычно.

    Я бы на вашем месте начал с OpenGL и посматривал на Vulkan. Знание OpenGL полезно ещё тем, что проще будет использовать родственные API, например WebGL, если захотите писать внутрибраузерный код.
    Ответ написан
    Комментировать
  • Как загрузить готовую 3D модель(из .obj) в программу, использующую DirectX (С++)?

    Nipheris
    @Nipheris Куратор тега C++
    Посмотрите https://github.com/syoyo/tinyobjloader - на беглый взгляд вроде работоспособная либа.
    Ответ написан
    Комментировать
  • OpenGl камера нужна помощь?

    Nipheris
    @Nipheris Куратор тега C++
    Во-первых, условимся, что в рамках вопроса не делаем различий между OpenGL и DirectX. Будем называть их "графическим API".
    Во-вторых, будем считать это графическое API низкоуровневым (т.е. таким, как OpenGL и DirectX). Графические движки, где есть понятие сцены и камеры не рассматриваем в принципе.

    Итак, с математикой вам все равно придется разбираться по книгам (ищите об операциях над матрицами и векторами), поэтому попробую подсказать с концептуальной точки зрения.
    Самая главная истина, которую вам сейчас нужно понять:

    Для графического API НИКАКОЙ КАМЕРЫ НЕ СУЩЕСТВУЕТ.

    Для графического API существуют только примитивы (треугольники, линии, точки), которые вы хотите нарисовать, состоящие из вершин с трехмерными координатами и набор математических преобразований, которые вы хотите выполнить над этими вершинами ПЕРЕД тем, как они начнут реально рисоваться на экране (т.е. перед их растеризацией). ВСЁ. Все, что для вас выглядит как движение/поворот объекта в игровом мире ("мировые преобразования"), и движение/поворот камеры ("видовые преобразования") - лишь результат того, что вектора, задающие вершины объекта (например, кубика) предварительно умножаются на нужную, рассчитанную вами матрицу.

    Лет 10-15 назад такая матрица отдавалась непосредственно графическому API через специальные вызовы (когда видяхи уже умели делать T&L https://en.wikipedia.org/wiki/GeForce_256 , но еще не умели шейдеры), сегодня умножение вектора на матрицу - всего лишь одно из множества различных преобразований, которые можно выполнить в векторном шейдере.

    Теперь читайте про то, как эти матрицы используются и рассчитываются. Когда поймете матчасть, гляньте библиотеку GLM (раз уж у вас указано C++ и OpenGL) - она поможет не делать вам рутинную работу.
    Ответ написан
    Комментировать
  • Как сделать релиз проекта с directx?

    Nipheris
    @Nipheris Куратор тега C++
    Подключить в релизной конфигурации релизные библиотеки и выбрать релизную конфигурацию при сборке проекта.
    Ответ написан
    7 комментариев