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

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

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

Ответ
 
Опции темы
Старый 27.11.2011, 18:36   #16
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Кст. Можешь с ними помочь? А то что то уже 3 день голову ломаю и ничего не получается.
http://www.gamedev.ru/code/forum/?id=155120#m3
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 21:37   #17
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

там при загрузке ты должен указывать errorBuffer, посмотри какую ошибку возвращает.
инфа что ниже работает 100%. Я в своем проекте загружал эффект с релизацией вершинного и пиксельного шейдера и все работало
HRESULT hr = D3DXCreateEffectFromFileA(
		  globals::device,           // связанное устройство
		  fileName,     // имя исходного файла
		  0,                // нет объявлений препроцессора
		  0,                // нет интерфейса ID3DXInclude
		  D3DXSHADER_DEBUG, // флаги компиляции
		  0,                // параметры не используются совместно
		  &_effect,          // возвращает результат
		  &_errorBuffer);    // возвращает строку с ошибками

	// Выводим любые сообщения об ошибках
	if( _errorBuffer )
	{//если валится тут то ошибка при компиляции
		 ::MessageBoxA(0, (char*)_errorBuffer->GetBufferPointer(), 0, 0);
		 return false;
	}

	if(FAILED(hr))
	{//если валится тут то файл не нашел
		 ::MessageBox(0, L"D3DXCreateEffectFromFile() - FAILED", 0, 0);
		 return false;
	}

	return true;
ИМХО но Delphi для DirectX это как для грузчика программирование. Не совместимые вещи. В DX все на указателях, так что юзай C++
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 22:00   #18
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

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

Я считаю что в Делфи сложно работать с указателями в отличие от c++. И твоя проблема как раз в этом и заключается! Тут можно и месяц копаться, а окажется какая нить мелоч связаная с указателем. Там ты передаешь в Begin указатель который не инициализован. Передавай ему ссылку на переменную.
Короче loc: PLongWord; это пустой указатель на неразмеченую память. Ты создай простой integer и в Begin передавай ссылку например
dxFx._Begin(@myint, 0);
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 22:37   #20
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Люди, а как в теории организовывается анимация, костная, морфная??? Чето вменяемой инфы понятной мне не нашел.
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 22:43   #21
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

dxFx := ((fx as IGetSelf).GetClassObject as TAgeEffect).dxEffect;
    hTech := dxFx.GetTechniqueByName('main');
    if Failed(dxFx.ValidateTechnique(hTech)) then Exit;
    dxFx.SetTechnique(hTech);
    numPasses := 0;
    dxFx._Begin(@numPasses, 0);
    if numPasses > 0 then
      for i := 0 to numPasses-1 do
      begin
        dxFx.BeginPass(i);
        FDevice.DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,FFacesCount*3,indexOffset,FFacesCount);
      end;
    dxFx._End;
Забавный факт, но это возвращает 1. То есть функция ничего не делает с этой переменной.
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
(Offline)
 
Ответить с цитированием
Старый 27.11.2011, 23:03   #22
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Сообщение от alexprey Посмотреть сообщение
dxFx := ((fx as IGetSelf).GetClassObject as TAgeEffect).dxEffect;
    hTech := dxFx.GetTechniqueByName('main');
    if Failed(dxFx.ValidateTechnique(hTech)) then Exit;
    dxFx.SetTechnique(hTech);
    numPasses := 0;
    dxFx._Begin(@numPasses, 0);
    if numPasses > 0 then
      for i := 0 to numPasses-1 do
      begin
        dxFx.BeginPass(i);
        FDevice.DrawIndexedPrimitive(D3DPT_TRIANGLELIST,0,0,FFacesCount*3,indexOffset,FFacesCount);
      end;
    dxFx._End;
Забавный факт, но это возвращает 1. То есть функция ничего не делает с этой переменной.
функция в эту переменную возвращает количество проходов.
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 00:01   #23
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

Да нет. Если зарание переменной присвоить 1, то будет 1, если 2 то 2
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 07:58   #24
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

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

9-й directx вышел в 2002 году. у него устаревшая архитектура, плохо отражающая архитектуру современных цпу/гпу. ты в 2011 году начал писать двиг. закончишь, хорошо, если к 2014-му. ты понимаешь, что архитектура выбранного тобой гапи к тому времени будет устаревшей как говно мамонта©? ИМХО, кот, если у тебя были проблемы с парсингом b3d, то с двигом будут подавно. Если чисто экспириенса набраться тока. opengl ее еще хуже отражает, правда но там есть расширения.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
falcon (14.12.2011)
Старый 28.11.2011, 08:02   #25
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

значит directx враппер под Delphi говно.
ЗЫ. В нынешнем dx_sdk, Не Begin, а BeginPass() и End, это говорит о том, что у тебя не то.
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 08:04   #26
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

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

9-й directx вышел в 2002 году. у него устаревшая архитектура, плохо отражающая архитектуру современных цпу/гпу. ты в 2011 году начал писать двиг. закончишь, хорошо, если к 2014-му. ты понимаешь, что архитектура выбранного тобой гапи к тому времени будет устаревшей как говно мамонта©? ИМХО, кот, если у тебя были проблемы с парсингом b3d, то с двигом будут подавно. Если чисто экспириенса набраться тока.
не ну вычислил я матрицу, как мне вернуть XYZ
PS. Я не буду писать супер мега двиг, так для реализации простеньких казуалок
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 08:05   #27
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

XYZ это 12,13,14 элементы матрицы
или 3,7,11, если у тебя column-major.

тока тебе эти XYZ не нужны, тока если для куллинга или пика какого нибудь. множь позицию вершины на матрицу, будь мужиком!
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 08:07   #28
pozitiffcat
Мастер
 
Аватар для pozitiffcat
 
Регистрация: 09.05.2010
Адрес: Самара
Сообщений: 1,083
Написано 254 полезных сообщений
(для 533 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

а как мне тогда нарисовать эти вершины, для каждой вершины двигать мировую матрицу чтоли?
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 08:14   #29
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

ну я не знаю как там в hlsl
как то так наверное:

float4x3 mWorldMatrixArray[63] : WORLDMATRIXARRAY;

struct a2v {
  float4 position : POSITION;
  float3 tangent : TANGENT;
  float3 normal : NORMAL;
  float4 blendWeights : BLENDWEIGHT;  //gets the bone weights
  float4 blendIndices : BLENDINDICES; //gets the bone indices
  float2 texCoord : TEXCOORD0;

};

// Get the indices and weights and cast
 
//from a 4D vector to a size 4 array

float weights[4] = (float[4])In.blendWeights;

int4 indexVector = In.blendIndices;

int   boneIndex[4]        = (int[4])indexVector;


// Calculate blended worldposition

worldPos= mul(In.position, bones[boneIndex[0]]) * weights[0];

worldPos+=mul(In.position, bones[boneIndex[1]]) * weights[1];

worldPos+=mul(In.position, bones[boneIndex[2]]) * weights[2];


// The bones should add up to 1 so the last bone weight is 1

// minus all the other weights

float lastweight = 1.0f - weights[0] - weights[1] - weights[2];

worldPos+=mul(In.position, bones[boneIndex[3]]) * lastweight;
еще раз - зачем тебе знать локальные xyz МАТРИЦЫ? вершины у тебя будет двигать шейдер. тыж отказался от ффп? впрочем даже если ты будешь считать позиции вершин на цпу тебе все равно достаточно будет тупо помножить позицию вершины на матрицу. а исходная позиция у тебя хранится в вершинном буфере. а в буфер она попала из файла. а в файл она попала из пакета 3д моделирования. а в пакет моделирования она попала от моделлера. а моделлер взялся от папы с мамой.
(Offline)
 
Ответить с цитированием
Старый 28.11.2011, 12:28   #30
alexprey
ПроЭктировщик
 
Регистрация: 22.10.2010
Сообщений: 196
Написано 16 полезных сообщений
(для 30 пользователей)
Ответ: Directx 9 текстурирование объекта несколькими текстурами

кот. если бы ты лучше читал ман то понял бы что используется begin beginpass endpass и end
__________________
Для меня нет ничего не реального в кодинге, но мне лень
gainOS - прорыв в проектировании ОС на MIDlet Pascal
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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