![]() |
Directx 9 текстурирование объекта несколькими текстурами
как реализовать сабж.
Device->SetTransform(D3DTS_WORLD, &p); Device->SetStreamSource(0, VB, 0, sizeof(Vertex)); Device->SetIndices(IB); Device->SetFVF(Vertex::FVF); Device->SetTexture(0, _tex0); Device->DrawIndexedPrimitive ............. Device->SetTexture(0, _tex1); Device->DrawIndexedPrimitive ............. так?? |
Ответ: 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 |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
нет тут не стоит использовать слои текстур, может у меня на один объект состоящий из 100500 граней, нужно наложить 100500 текстур на каждую грань :-D
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
задача нечётко поставлена, скажи что хочешь сделать %)
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Есть объект - 1 меш. В 3d maxe на него назначено много текстур, штук 20. Я загружаю все в один буфер вершин с индексами, и нужно юзать эти текстуры.
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
т.е. меш в максе состоит из полигонов с разными текстурами? ну да, тогда обычно рендерят кадый кусок отдельным дипом, как вроде ты и написал в первом посте. собственно в blitz3d/xors3d понятие surface и является такой частью меша с одной текстурой, они рендерятся каждый отдельным дипом.
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Все правильно делаешь. Сам делаю по такому же принципу, только у меня удобнее все это сделано.
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
еще вопрос. При написании движка с нуля, изначально построить систему блендинга и освещения на основе шейдеров, и забить на реализацию стандартных DX совских методов, или все же их тоже включить в двиг.
Просто у меня в планах, вообще не реализовывать всякую устаревшую чушь, а сразу делать deferred shading, и колиззии, выбор объектов и т.п. на буллете. Познания в DX пока что ничтожные, и решаю не заострять внимание на неактуальные вещи, а сразу копать в сторону шейдеров Еще вопросик. Как получить глобальную позицию, поворот, исходя из матрицы? |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Не делай никакой реализации FFP ("всякой старой хрени"), а делай Только шейдеры.
Например сравнительно молодой GLES 2.0 - также не имеет Никакого FFP вообще, и всё на шейдерах, что имхо - очень круто. |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
>>Как получить глобальную позицию, поворот, исходя из матрицы?
Кури матан =) И поймешь что практически не реально +) |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Я пытаюсь изучить DX, что кстати получается, и замутить очень простой двиг для мелких игрушек типа 8bit story на шейдерах полностью, и встроеной физике (буллет, оде, хз еще не выбрал).
охренеть если не реально, тогда как посчитать такую вещь: есть объект на него назначен чилд. чилд смещен на какоето расстояние, объект родитель повернуть, чилд уже имеет другие позиции, как их узнать. |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Цитата:
Позиция чайлда - будет зависеть от его матрицы и матрицы отца. Перемножаешь матрицу чайлда на матрицу отца - будет результат, который имеет все глобальные данные чайлда. Я в этом нууб, но про перемножение матриц, верно? |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
про перемножение да. тоесть при перемножении я получаю новую матрицу, которая означает позицию чилда. Но как же вытащить XYZ
X3025 Global variables are implicitly constant - это сообщение выдает компилятор шейдеров при компиляции шейдера. Что за хрень знает ктонить? Код:
extern matrix WorldViewMatrix; |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
первый раз такое вижу, обычно матрицы объявляют как float4x4, векторы как float3/float4 |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Охренеть, шейдерами так вообще пол директ икса заменить можно
Цитата:
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Кст. Можешь с ними помочь? А то что то уже 3 день голову ломаю и ничего не получается.
http://www.gamedev.ru/code/forum/?id=155120#m3 |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
там при загрузке ты должен указывать errorBuffer, посмотри какую ошибку возвращает.
инфа что ниже работает 100%. Я в своем проекте загружал эффект с релизацией вершинного и пиксельного шейдера и все работало Код:
HRESULT hr = D3DXCreateEffectFromFileA( |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Почему все считают что Делфи такой кривой? Это паскаль обрезан. В делфи есть указатели.
В этом вся фишка то что грузится нормально, ошибок не возвращает. Но кол-во проходов почему то все равно возвращает 0 |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Я считаю что в Делфи сложно работать с указателями в отличие от c++. И твоя проблема как раз в этом и заключается! Тут можно и месяц копаться, а окажется какая нить мелоч связаная с указателем. Там ты передаешь в Begin указатель который не инициализован. Передавай ему ссылку на переменную.
Короче loc: PLongWord; это пустой указатель на неразмеченую память. Ты создай простой integer и в Begin передавай ссылку например dxFx._Begin(@myint, 0); |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Люди, а как в теории организовывается анимация, костная, морфная??? Чето вменяемой инфы понятной мне не нашел.
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Код:
dxFx := ((fx as IGetSelf).GetClassObject as TAgeEffect).dxEffect; |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Цитата:
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Да нет. Если зарание переменной присвоить 1, то будет 1, если 2 то 2
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
морфная анимация организуется установкой двух буфферов позиций вершин и лерпом по ним в шейдере.
костаная рендерится так: есть массив матриц (или два кватерниона, но это сложнее) для каждой кости полученный из скелета. есть набор вершин с дополнительными аттрибутами индекса матрицы и ее веса. результирующая позиция складывается из всех трансформаций помноженных на веса. 9-й directx вышел в 2002 году. у него устаревшая архитектура, плохо отражающая архитектуру современных цпу/гпу. ты в 2011 году начал писать двиг. закончишь, хорошо, если к 2014-му. ты понимаешь, что архитектура выбранного тобой гапи к тому времени будет устаревшей как говно мамонта©? ИМХО, кот, если у тебя были проблемы с парсингом b3d, то с двигом будут подавно. Если чисто экспириенса набраться тока. opengl ее еще хуже отражает, правда :) но там есть расширения. |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
значит directx враппер под Delphi говно.
ЗЫ. В нынешнем dx_sdk, Не Begin, а BeginPass() и End, это говорит о том, что у тебя не то. |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Цитата:
PS. Я не буду писать супер мега двиг, так для реализации простеньких казуалок |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
XYZ это 12,13,14 элементы матрицы
или 3,7,11, если у тебя column-major. тока тебе эти XYZ не нужны, тока если для куллинга или пика какого нибудь. множь позицию вершины на матрицу, будь мужиком! |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
а как мне тогда нарисовать эти вершины, для каждой вершины двигать мировую матрицу чтоли?
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
ну я не знаю как там в hlsl
как то так наверное: Код:
float4x3 mWorldMatrixArray[63] : WORLDMATRIXARRAY; |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
кот. если бы ты лучше читал ман то понял бы что используется begin beginpass endpass и end
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
у меня begin такого вообще нет
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Как так то? Даже в книге про это написано
http://www.netlib.narod.ru/library/book0032/ch19_06.htm |
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Я читал книгу, там устаревший SDK
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Ну а как ты тогда грузишь эффект? И применяешь?
|
Ответ: Directx 9 текстурирование объекта несколькими текстурами
Код:
HRESULT hr = D3DXCreateEffectFromFileA( Код:
UINT numPasses = 0; |
Часовой пояс GMT +4, время: 18:39. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot