Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > C++

Ответ
 
Опции темы
Старый 26.11.2011, 00:45   #1
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Directx 9 текстурирование объекта несколькими текстурами

как реализовать сабж.

Device->SetTransform(D3DTS_WORLD, &p);
Device->SetStreamSource(0, VB, 0, sizeof(Vertex));
Device->SetIndices(I;
Device->SetFVF(Vertex::FVF);
Device->SetTexture(0, _tex0);
Device->DrawIndexedPrimitive .............
Device->SetTexture(0, _tex1);
Device->DrawIndexedPrimitive .............

так??
(Offline)
 
Ответить с цитированием
Старый 26.11.2011, 01:08   #2
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

скорее так

Device->SetTransform(D3DTS_WORLD, &p);
Device->SetStreamSource(0, VB, 0, sizeof(Vertex));
Device->SetIndices(I;
Device->SetFVF(Vertex::FVF);
Device->SetTexture(0, _tex0);
Device->SetTexture(1, _tex1);
Device->DrawIndexedPrimitive .............

а вообще не помню точно, юзаю ID3DXEffect
(Offline)
 
Ответить с цитированием
Старый 26.11.2011, 01:16   #3
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

нет тут не стоит использовать слои текстур, может у меня на один объект состоящий из 100500 граней, нужно наложить 100500 текстур на каждую грань
(Offline)
 
Ответить с цитированием
Старый 26.11.2011, 01:18   #4
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

задача нечётко поставлена, скажи что хочешь сделать %)
(Offline)
 
Ответить с цитированием
Старый 26.11.2011, 01:26   #5
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Есть объект - 1 меш. В 3d maxe на него назначено много текстур, штук 20. Я загружаю все в один буфер вершин с индексами, и нужно юзать эти текстуры.
(Offline)
 
Ответить с цитированием
Старый 26.11.2011, 01:33   #6
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

т.е. меш в максе состоит из полигонов с разными текстурами? ну да, тогда обычно рендерят кадый кусок отдельным дипом, как вроде ты и написал в первом посте. собственно в blitz3d/xors3d понятие surface и является такой частью меша с одной текстурой, они рендерятся каждый отдельным дипом.
(Offline)
 
Ответить с цитированием
Старый 26.11.2011, 19:13   #7
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Все правильно делаешь. Сам делаю по такому же принципу, только у меня удобнее все это сделано.
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 02:38   #8
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

еще вопрос. При написании движка с нуля, изначально построить систему блендинга и освещения на основе шейдеров, и забить на реализацию стандартных DX совских методов, или все же их тоже включить в двиг.
Просто у меня в планах, вообще не реализовывать всякую устаревшую чушь, а сразу делать deferred shading, и колиззии, выбор объектов и т.п. на буллете. Познания в DX пока что ничтожные, и решаю не заострять внимание на неактуальные вещи, а сразу копать в сторону шейдеров

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

Последний раз редактировалось pozitiffcat, 27.11.2011 в 03:44.
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 03:46   #9
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Не делай никакой реализации FFP ("всякой старой хрени"), а делай Только шейдеры.
Например сравнительно молодой GLES 2.0 - также не имеет Никакого FFP вообще, и всё на шейдерах, что имхо - очень круто.
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 04:16   #10
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

>>Как получить глобальную позицию, поворот, исходя из матрицы?
Кури матан =) И поймешь что практически не реально +)
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 04:30   #11
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Я пытаюсь изучить DX, что кстати получается, и замутить очень простой двиг для мелких игрушек типа 8bit story на шейдерах полностью, и встроеной физике (буллет, оде, хз еще не выбрал).
охренеть если не реально, тогда как посчитать такую вещь: есть объект на него назначен чилд. чилд смещен на какоето расстояние, объект родитель повернуть, чилд уже имеет другие позиции, как их узнать.
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 04:36   #12
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Сообщение от pozitiffcat Посмотреть сообщение
охренеть если не реально, тогда как посчитать такую вещь: есть объект на него назначен чилд. чилд смещен на какоето расстояние, объект родитель повернуть, чилд уже имеет другие позиции, как их узнать.
Либо ты пересчитываешь матрицы при модификациях оных, либо ты их просчитываешь при каждом рендере.
Позиция чайлда - будет зависеть от его матрицы и матрицы отца.
Перемножаешь матрицу чайлда на матрицу отца - будет результат, который имеет все глобальные данные чайлда.

Я в этом нууб, но про перемножение матриц, верно?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (27.11.2011)
Старый 27.11.2011, 04:39   #13
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

про перемножение да. тоесть при перемножении я получаю новую матрицу, которая означает позицию чилда. Но как же вытащить XYZ
X3025 Global variables are implicitly constant - это сообщение выдает компилятор шейдеров при компиляции шейдера. Что за хрень знает ктонить?
extern matrix WorldViewMatrix;
extern matrix WorldViewProjMatrix;

extern vector Color;

extern vector LightDirection;

static vector Black = {0.0f, 0.0f, 0.0f, 0.0f};

//
// Структуры
//

struct VS_INPUT
{
     vector position : POSITION;
     vector normal   : NORMAL;
};

struct VS_OUTPUT
{
     vector position : POSITION;
     float2 uvCoords : TEXCOORD;
     vector diffuse  : COLOR;
};

//
// Точка входа
//

VS_OUTPUT Main(VS_INPUT input)
{
     // Обнуляем члены выходной структуры
     VS_OUTPUT output = (VS_OUTPUT)0;

     // Преобразуем местположение вершины в однородное
     // пространство отсечения
     output.position = mul(input.position, WorldViewProjMatrix);

     //
     // Преобразуем вектор света и нормаль в пространство вида.
     // Мы устанавливаем значение компоненты w равным нулю потому что
     // мы преобразуем векторы. Предполагается, что в мировой матрице
     // нет никакого масштабирования.
     //
     LightDirection.w = 0.0f;
     input.normal.w   = 0.0f;
     LightDirection   = mul(LightDirection, WorldViewMatrix);
     input.normal     = mul(input.normal, WorldViewMatrix);

     //
     // Вычисление одномерной координаты текстуры
     // для мультипликационной визуализации
     //
     float u = dot(LightDirection, input.normal);

     //
     // Если u меньше нуля, считаем, что u равно нулю, поскольку
     // отрицательные значения соответствуют углам между вектором света
     // и нормалью большим 90 градусов. А если угол больше 90 градусов,
     // значит поверхность не освещается
     //
     if(u < 0.0f)
          u = 0.0f;

     //
     // Устанавливаем вторую координату текстуры на середину
     //
     float v = 0.5f;
     output.uvCoords.x = u;
     output.uvCoords.y = v;

     // Сохраняем цвет
     output.diffuse = Color;

     return output;
}
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 05:27   #14
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

построить систему блендинга и освещения на основе шейдеров
блендинг объектов между собой по-прежнему FFPовый обычно везде.

Как получить глобальную позицию, поворот, исходя из матрицы?
ты уверен, что тебе это нужно? скорее всего ты неправильно подошёл к задаче

есть объект на него назначен чилд. чилд смещен на какоето расстояние, объект родитель повернуть, чилд уже имеет другие позиции, как их узнать.
умножить матрицу чилда на матрицу парента?

Но как же вытащить XYZ
умножь локальный XYZ на матрицу парента

X3025 Global variables are implicitly constant - это сообщение выдает компилятор шейдеров при компиляции шейдера.
ваще то он строчку показывает, где ошибка

extern matrix WorldViewMatrix;
extern matrix WorldViewProjMatrix;
extern vector Color;
extern vector LightDirection;
static vector Black = {0.0f, 0.0f, 0.0f, 0.0f};
че за вектор и матрикс кстати?
первый раз такое вижу, обычно матрицы объявляют как float4x4, векторы как float3/float4
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 18:05   #15
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Охренеть, шейдерами так вообще пол директ икса заменить можно
че за вектор и матрикс кстати?
первый раз такое вижу, обычно матрицы объявляют как float4x4, векторы как float3/float4
в книге так учат, и работает.. я разобрался заюзал d3dxeffect
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 08:34.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com