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

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

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

Ответ
 
Опции темы
Старый 23.04.2010, 18:26   #1
firstvirus
Оператор ЭВМ
 
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений
(для 4 пользователей)
Delphi & DirectX

Пишу отрисовку 2D через D3D чтобы можно было использовать альфаканал. Столкнулся с проблемой:
D3D_Device.SetRenderState(D3DRS_ALPHABLENDENABLE,DWORD(true));
D3D_Device.SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
D3D_Device.SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
DrawFilledRect(100,300,100,100,$77FF0000,$77770000,$FFFF0000,$FF770000);
D3D_Device.SetRenderState(D3DRS_ALPHABLENDENABLE,DWORD(false));
Отрисовка при включении не происходит вообще, даже Ксорсовские часики Если заккоментировать строки с включением АльфаБленда, то мой квадрат отрисовывается, но естественно на альфа-состовляющую он не обращает внимание. Где я ошибся? Нужно ли включать вертексные шейдеры для нормальной работы?
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 18:29   #2
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Ответ: Delphi & DirectX

Я не силен в DX но глянь тут мож поможет

http://mirgames.ru/articles/directx/dxtutorial.html
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 18:47   #3
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: Delphi & DirectX

Ты забыл про SetTextureStageState.

http://www.two-kings.de/tutorials/dx...raphics07.html
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
firstvirus (23.04.2010)
Старый 23.04.2010, 18:58   #4
firstvirus
Оператор ЭВМ
 
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Delphi & DirectX

Спасибо, однако у меня почему то вместо часиков Ксорса рисуется зеленый прямоугольник
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 19:05   #5
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: Delphi & DirectX

Сообщение от firstvirus Посмотреть сообщение
Спасибо, однако у меня почему то вместо часиков Ксорса рисуется зеленый прямоугольник
Все вопросы к производителям часов.

PS. Напиши свой DrawFilledRect.
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 19:37   #6
firstvirus
Оператор ЭВМ
 
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Delphi & DirectX

procedure DrawFilledRect(x,y,width,height:single;Color1,Color2,Color3,Color4:Cardinal);
var
  VPoint:array[0..4]of TCustomVertex;
  D3D_VB:IDirect3DVertexBuffer9;
  pVertices: Pointer;
begin
VPoint[0].x:=x;
VPoint[0].y:=y;
VPoint[0].z:=0;
VPoint[0].rhw:=0;
VPoint[0].Color:=Color1;
VPoint[1].x:=x+width;
VPoint[1].y:=y;
VPoint[1].z:=0;
VPoint[1].rhw:=0;
VPoint[1].Color:=Color2;
VPoint[2].x:=x;
VPoint[2].y:=y+height;
VPoint[2].z:=0;
VPoint[2].rhw:=0;
VPoint[2].Color:=Color3;
VPoint[3].x:=x+width;
VPoint[3].y:=y+height;
VPoint[3].z:=0;
VPoint[3].rhw:=0;
VPoint[3].Color:=Color4;
D3D_Device.CreateVertexBuffer(sizeof(VPoint),D3DUSAGE_WRITEONLY,D3DFVF_CUSTOM,D3DPOOL_DEFAULT,D3D_VB,nil);
D3D_VB.Lock(0, sizeof(VPoint), pVertices, 0);
Move(VPoint[0], pVertices^, sizeof(VPoint));
D3D_VB.Unlock;
D3D_Device.SetStreamSource(0,D3D_VB,0,sizeof(TCustomVertex));
D3D_Device.SetFVF(D3DFVF_CUSTOM);
D3D_Device.DrawPrimitive(D3DPT_TRIANGLESTRIP,0,2);
end;
Этот кусок кода честно спи... сперт из одной статьи и немного модифицирован.
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 20:12   #7
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: Delphi & DirectX

Вроде все правильно %)
А это, покажи код очистки экрана. Может часы зеленые потому, что ты зеленым очищаешь?
(Offline)
 
Ответить с цитированием
Старый 23.04.2010, 21:05   #8
firstvirus
Оператор ЭВМ
 
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Delphi & DirectX

я экран чищу xCls(); без установки цвета чистки
(Offline)
 
Ответить с цитированием
Старый 24.04.2010, 05:57   #9
johnk
Легенда
 
Регистрация: 01.10.2006
Сообщений: 3,705
Написано 296 полезных сообщений
(для 568 пользователей)
Ответ: Delphi & DirectX

Может лучше отказаться от этого движка? Или от delphi? :E
Если не сильно рыгаешь от microsoft, попробуй C# + XNA — перспективнее дельфей будет.
(Offline)
 
Ответить с цитированием
Старый 12.05.2010, 21:31   #10
firstvirus
Оператор ЭВМ
 
Регистрация: 13.01.2010
Сообщений: 35
Написано 3 полезных сообщений
(для 4 пользователей)
Ответ: Delphi & DirectX

Я Си не долюбливаю, мне проще на паскале писать.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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