Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
x5reunion
3 / 3 / 1
Регистрация: 25.03.2014
Сообщений: 45
#1

Массивы Функций. DirectX 11. Отобразить несколько моделей - C++

25.04.2014, 08:25. Просмотров 464. Ответов 4
Метки нет (Все метки)

Всем привет, продолжаю пытаться изучать DirectX 11.

Возникла задача отобразить более одной разной модели.

Есть такая штука ID3D11DeviceContext* dirX11_d3dContext; // Контекст устройства (рисование) и многие подобные ему, она участвует в инициализации графического конвейера + в отрисовке объекта. Как нарисовать 1 объект ясно, как сделать сотню его копий тоже ясно возникла проблема с созданием более одного объекта.

Я понял что можно создать массив этих объектов. Далее допустим мне надо загрузить 100 разных моделей одним и тем же способом, но все они будут отличаться я так понял надо создавать что то типо массива функций?

Как это сделать? А если вот это ID3D11DeviceContext* dirX11_d3dContext; находится в классе который является абстрактным и наследуется + она еще вызывается и в производном классе и в его функциях для загрузки модели. Если ее будет 100 копий ее надо же еще и как то удалять.

DirectX9 там все понятно там готовая функция загрузки моделей, 10 и 11 только DXUT но его в топку. В книгах и туторах авторы благополучно проходят стороной подобные темы, давая лишь обобщенную инфу.

Я так понял это же чистое программирование я слышал про какие то фабрики объектов, или подобные вещи вообще как то по другому реализуются.

Подскажите пож в какую сторону копать, что прочитать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2014, 08:25     Массивы Функций. DirectX 11. Отобразить несколько моделей
Посмотрите здесь:

Массивы. Отобразить матрицу симметрично относительно главной диагонали - C++
2)Инициализацию матрицы, ее вывод на экран и «основное действие» программы реализовать в виде функции (т.е. как минимум три функции) ...

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

Добавить несколько функций - C++
привет всем) вот есть код на С++ в консольном приложении VS 2008 - калькулятор с функциями сложения, вычитания, умножения и деления....

Разбить на несколько функций - C++
Доброго времени суток, подскажите пожалуйста, нужно разбить одну большую функцию, на несколько. Вот исходные код с одной...

Динамические массивы, как отобразить в switch условие, если функция возвращает 0 - C++
Подскажите пожалуйста, если стоит условие, что при некорректно введенных данных, а именно элементов массива - вернуть NULL, как это...

Нужно реализовать несколько функций - C++
// копирует source в destination и возвращает указатель на destination char* strcpy(char* destination, const char* source); //...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
25.04.2014, 08:40     Массивы Функций. DirectX 11. Отобразить несколько моделей #2
Если вот это:
Цитата Сообщение от x5reunion Посмотреть сообщение
Я понял что можно создать массив этих объектов. Далее допустим мне надо загрузить 100 разных моделей одним и тем же способом, но все они будут отличаться я так понял надо создавать что то типо массива функций?
Как это сделать?
То это делается посредством указателей на функции.
C++
1
{возвращаемый тип} (*func[{размерность массива}])({типы ргументов}) ;
IrineK
Заблокирован
25.04.2014, 09:56     Массивы Функций. DirectX 11. Отобразить несколько моделей #3
Цитата Сообщение от x5reunion Посмотреть сообщение
типо массива функций
Типо калькулятор. Типо пример.
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
#include <iostream>
 
using std::cout;
using std::cin;
 
int Add (int, int);
int Substract (int, int);
int Multiply (int, int);
int Divide (int, int);
 
typedef int (*TFunc) (int, int); 
 
int Add (int a, int b)
{   int c = a + b;
    return c;
}
 
int Substract (int a, int b)
{   int c = a - b;
    return c;
}
 
int Multiply (int a, int b)
{   int c = a * b;
    return c;
}
 
int Divide (int a, int b)
{   int c = a / b;
    return c;
}
 
int main () 
{   setlocale (LC_CTYPE, "Russian");
    TFunc arr[] = {Add, Substract, Multiply, Divide};
    
    char operation [] = {'+', '-', '*', '/'};
    int a, b, i, res;
    char op;
 
    cout << "Ввведите два целых числа\n";
    cin >> a >> b;
 
    cout << "Выберите действие: + - * /\n";
    cin >> op;
 
    for (i = 0; i<4; i++)
        if (operation[i] == op)
            res = arr[i] (a,b);
 
    cout << a << " " << op << " " << b << " = " << res;
    cin.sync(); cin.get();
    return 0;
}
WingCommander
Заблокирован
25.04.2014, 14:00     Массивы Функций. DirectX 11. Отобразить несколько моделей #4
Цитата Сообщение от x5reunion Посмотреть сообщение
Как нарисовать 1 объект ясно, как сделать сотню его копий тоже ясно возникла проблема с созданием более одного объекта.
Прорисовка нескольких объектов происходит следующим образом:
1. Задание всех необходимых трансформаций объекта (перемещение/ вращение и т.д.)
2. Задание всех необходимых SubReources, текстуры, константы и т.д.
3. Задание всех шейдеров
4. Задание VertexBuffera-а
5. Draw.
....
всё это повторяется для каждого объекта
....

Как отрисовал все - вызываешь у контекста устройства - Present

Цитата Сообщение от x5reunion Посмотреть сообщение
Подскажите пож в какую сторону копать, что прочитать?
для загрузки объектов начиная с DirectX 10 больше нет специальных вспомогательных функций, всё делается вручную. Форматов очень много, по этому, надобность таких функций и отпала.
Значит так, выбираешь формат, рекомендую для начала текстовые ASE, в него экспортируешь из 3DS Max модель, открываешь этот файл в блокноте и изучаешь - там всё наглядно и просто. Дальше, в твоей игре на DirectX пишешь класс - загрузчик моделей, который открывает этот файл и начинает его парсить в нужный для тебя формат, всё зависит от того, что ты используешь в шейдерах... Нужны тебе би-нормали и тангенты, не нужны ... Сколько координат текстур... Сами текстуры и т.д.
Так же можешь посмотреть в сторону формата COLLADA, он в текстовом XML, в отличии от ASE, в него можно экспортировать скелетную анимацию.
Лично я рекомендую написать PlugIn для 3DS Max и экспортировать уже что нужно и куда нужно, можно прямо в свой бинарный формат.
Есть ещё вариант - есть бесплатная библиотека для загрузке десятков разных форматов единообразным образом, называется assimp, можешь погуглить, она довольно таки проста в использование, но есть у неё и ряд недостатков, в частности далеко не всё что нужно порой из форматов выдёргивает.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.04.2014, 15:31     Массивы Функций. DirectX 11. Отобразить несколько моделей
Еще ссылки по теме:

Один mutex на несколько функций - C++
Есть три функции, которые могут работать с одним вектором в одно и то же время из разных потоков. Можно ли использовать один мьютекс на эти...

Несколько функций в одной программе - C++
Проблема такая. Пишу программу, хочу, чтобы при выборе определенного номера (задания) программа переходила к этому заданию. Напечатал на...

Несколько функций - активна только одна - C++
Вообщем есть несколько функций? int Fun1,Fun2,Fun3,Fun4; if(Fun1){Действие} if(Fun2){Действие} if(Fun3){Действие} ...

массивы , функций... - C++
Решите пожалуйсто 3 задачи , нужен весь код решения , спасибо. задача1. В одномерном массиве, состоящем из n вещественных элементов,...

Создание матрицы и сортировка, используя несколько функций - C++
Доброго времени суток, всем пользователям. Нуждаюсь в помощи, имею код, в котором лишь используется 1 функция int main (); Но согласно...

Насколько целесообразно разбивать программу на несколько функций? - C++
Такой вот вопрос. Допустим, программу можно разбить на отдельные функции. С одной стороны это удобно - в одном месте вызываем...


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

Или воспользуйтесь поиском по форуму:
x5reunion
3 / 3 / 1
Регистрация: 25.03.2014
Сообщений: 45
25.04.2014, 15:31  [ТС]     Массивы Функций. DirectX 11. Отобразить несколько моделей #5
Вы не совсем поняли вопроса я это все сделал. Я не спрашиваю как из файла загрузить модель я это уже все реализовал.

Я думаю выше мне ответили. Всем спасибо.
Yandex
Объявления
25.04.2014, 15:31     Массивы Функций. DirectX 11. Отобразить несколько моделей
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru