Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.08.2010, 16:34   #1
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
Восклицание Текстуринг в Direct3D9

Разбираюсь с текстурированнием в Direct3d9. Хочу расскрасить 2 объекта разными текстурами, но получается что оба красятся в одну и ту же, которая была применена последней. Что делать?
Это выполняеться при запуске проги
Код:
Device.SetMaterial( CreateMaterial(cl_white,cl_black,cl_black,cl_black,5));
 D3DXCreateTextureFromFile(Device,'grass.jpg',tex);
 //Ñîçäàíèå òðàâû
 Device.SetTexture(0,tex);
 grass[0]:= CreateVertex(-5,0,-5, 0,5);
 grass[1]:= CreateVertex(-5,0,5,  0,0);
 grass[2]:= CreateVertex(5,0,5,   5,0);
 grass[3]:= CreateVertex(5,0,-5,  5,5);
 CreateFace(grass,true);
 //Ñîçäàíèå ÿùèêà
 box:= T3DBox.Create;
 box.width:= 2;
 box.height:= 2;
 box.len:= 2;
 box.AddToStream;
 D3DXCreateTextureFromFile(Device,'box.jpg',tex);
 Device.SetTexture(0,tex);
...
function CreateVertex(x,y,z, u,v: single): T3DVertex;
begin
 ZeroMemory(@Result,SizeOf(T3Dvertex));
 Result.pos.x:= x;
 Result.pos.y:= y;
 Result.pos.z:= z;
 Result.u:= u;
 Result.v:= v;
end;
...
function CreateFace(ver: T3DFace; isnormal: boolean): boolean;
begin
 CreatePolygone(ver[0],ver[1],ver[2],isnormal);
 CreatePolygone(ver[2],ver[3],ver[0],isnormal);
end;
...
function CreatePolygone(ver: T3DPolygone; isnormal: boolean): boolean;
 var pver: pointer;
     normal: TD3DXVector3;
begin
 if isnormal then
 begin
  normal:= GetNormal(ver[0].pos,ver[1].pos,ver[2].pos);
  ver[0].npos:= normal;
  ver[1].npos:= normal;
  ver[2].npos:= normal;
 end;
 if Failed( VertexBuffer.Lock(3*PolygoneCount*SizeOf(T3DVertex),3*SizeOf(T3DVertex),pver,0) ) then exit;
  Move(ver,PVer^,3*SizeOf(T3DVertex));
 VertexBuffer.Unlock;
 inc(polygonecount);
end;
alexprey вне форума Ответить с цитированием
Старый 23.08.2010, 19:21   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Вот:
Код:
D3DXCreateTextureFromFile(Device,'grass.jpg',tex);
 //Ñîçäàíèå òðàâû
 Device.SetTexture(0,tex);
и вот
Код:
 D3DXCreateTextureFromFile(Device,'box.jpg',tex);
 Device.SetTexture(0,tex);
Вы сразу пытаетесь установить две текстуры, а сначала нужно прорисовать первый объект с его текстурой, а затем установить вторую текстуру и прорисовывать второй объект с его текстурой.
_-Re@l-_ вне форума Ответить с цитированием
Старый 23.08.2010, 21:15   #3
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Я вроде так и делаю
Или я не понимаю слово прорисовать
функции CreateFace и AddToStream сразу добовляет всю нужное в VertexBuffer
alexprey вне форума Ответить с цитированием
Старый 23.08.2010, 21:57   #4
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Хм... заметил, что если поставить sleep перед рисованием кубика, то на травке будет нужная текстура. Потом как нарисуется куб, то трава будет с текстурой кубика и сам куб.
alexprey вне форума Ответить с цитированием
Старый 23.08.2010, 22:00   #5
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

А вот до меня кажись дошло как сделать. Но получается что-то геморно.
Ну может есть еще у кого идеи?
alexprey вне форума Ответить с цитированием
Старый 26.08.2010, 22:17   #6
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

А нет все тему можно удалять!

Последний раз редактировалось alexprey; 26.08.2010 в 22:19. Причина: личное нубство
alexprey вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
direct3d9. Камера. VC++. Crivel Gamedev - cоздание игр: Unity, OpenGL, DirectX 4 08.07.2010 16:36
Direct3D9 VintProg Gamedev - cоздание игр: Unity, OpenGL, DirectX 15 02.11.2009 10:54