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

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

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

Ответ
 
Опции темы
Старый 02.09.2009, 15:51   #1
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
DirectX смешивание

всем привет!
вообще понемножку познаю эту штуку!

хочется сделать
режимы смешивания как в блитце
команды textureblend и entityblend

вот что сделал:
структура вершины
#define _MAX_LAYER     3
struct sVertex
{
	sVector3		position;	//точка
	HCOLOR			color;		//цвет дифуз		
	sVector2		coord[_MAX_LAYER];
           //3 текстуры - значит 3 текстурыне координаты
	sVertex(void)
	{
            position.x = position.y = 0.f;
            z = 0.5f;
            color = 0xFFFFFFFF;
            for(int i=0;i<3;i++)
                coord[i].x = coord[i].y = 0.f;
    }
};

//дефайн гибкий вершинко от директ икх
#define D3DFVF_HGEVERTEX    (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_TEX3)
- это чтобы дать предстваления о вершинке


чтобы менять режимы смешивания для ентити
применяю команду дивыйс->SetRenderState(...)
ими добился похожести на блитцевский ентити бленд


а вот для текстуры использую
дывайс->SetTextureState(...)
какие парметры тут ставиь для блитцевского
ТекстураБленд текс,4 ?
это типо Дот3 делать?
маялся вчера весь день не подобрал (
зато сделал для маски это ТекстураБленд текс,2



ПС Забыл сказать Дх8, если что

Последний раз редактировалось Horror, 02.09.2009 в 15:54. Причина: забыфчивость
(Offline)
 
Ответить с цитированием
Старый 03.09.2009, 02:41   #2
-=SCiP=-
ПроЭктировщик
 
Аватар для -=SCiP=-
 
Регистрация: 23.09.2007
Сообщений: 126
Написано 11 полезных сообщений
(для 16 пользователей)
Ответ: DirectX смешивание

Horror ПС Забыл сказать Дх8, если что
Зачем тебе Дх8?
9я версия намного лучше.

========================
какие парметры тут ставиь для блитцевского
ТекстураБленд текс,4 ?
это типо Дот3 делать?


pd->SetTextureStageState(0, D3DTSS_MIPFILTER,D3DTEXF_POINT);

pd->SetTextureStageState(0, D3DTSS_MIPFILTER,D3DTEXF_LINEAR);

pd->SetTextureStageState(0, D3DTSS_MIPFILTER,D3DTEXF_NONE);
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (03.09.2009)
Старый 03.09.2009, 14:06   #3
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Ответ: DirectX смешивание

оке пасиб,
думул и о 9том)
в принципе в 8м
те функции которые я использую есть и у 9го, только немного по именам отличается и перевести не трудно

эффекты я не собираюсь использовать в данный момент и 8мерка устрайвает
(Offline)
 
Ответить с цитированием
Старый 03.09.2009, 14:16   #4
Knightmare
Дэвелопер
 
Регистрация: 14.02.2007
Сообщений: 1,471
Написано 824 полезных сообщений
(для 2,920 пользователей)
Ответ: DirectX смешивание

Сообщение от -=SCiP=- Посмотреть сообщение
какие парметры тут ставиь для блитцевского
ТекстураБленд текс,4 ?
это типо Дот3 делать?


pd->SetTextureStageState(0, D3DTSS_MIPFILTER,D3DTEXF_POINT);

pd->SetTextureStageState(0, D3DTSS_MIPFILTER,D3DTEXF_LINEAR);

pd->SetTextureStageState(0, D3DTSS_MIPFILTER,D3DTEXF_NONE);
Что это за бред?! Уважаемый это смена метода фильтрации мип-уровней текстуры.
В 8 версии у текстур роде немного другой API был, но переделать будет не сложно:
switch(blendMode)
{
     case 
1:
        
pD3DDevice->SetTextureStageState(indexD3DTSS_COLOROPD3DTOP_BLENDTEXTUREALPHA);
        break;
    case 
2:
        
pD3DDevice->SetTextureStageState(indexD3DTSS_COLOROPD3DTOP_MODULATE);
        break;
    case 
3:
        
pD3DDevice->SetTextureStageState(indexD3DTSS_COLOROPD3DTOP_ADD);
        break;
    case 
4:
        
pD3DDevice->SetTextureStageState(indexD3DTSS_COLOROPD3DTOP_DOTPRODUCT3);
        break;
    case 
5:
        
pD3DDevice->SetTextureStageState(indexD3DTSS_COLOROPD3DTOP_MODULATE2X);
        break;

Для бленда мешей:
if(blendMode == 1)
{
    
pD3DDevice->SetRenderState(D3DRS_SRCBLENDD3DBLEND_SRCALPHA);
    
pD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);
}
else if(
blendMode == 2)
{
    
pD3DDevice->SetRenderState(D3DRS_SRCBLENDD3DBLEND_DESTCOLOR);
    
pD3DDevice->SetRenderState(D3DRS_DESTBLENDD3DBLEND_ZERO);
}
else if(
blendMode == 3)
{
    
pD3DDevice->SetRenderState(D3DRS_SRCBLENDD3DBLEND_SRCALPHA);
    
pD3DDevice->SetRenderState(D3DRS_DESTBLENDD3DBLEND_ONE);

Думаю с остальными стейтами сам разберешься.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Horror (04.09.2009)
Старый 04.09.2009, 22:48   #5
Horror
Бывалый
 
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений
(для 110 пользователей)
Ответ: DirectX смешивание

Спасиб еще раз эт снова я)
вообщем прогресс есть)
какие еще стейты надо вписать
т.к. сейчас он рендерит только ту текстуру которая сверху
g_pd3dDevice->SetTexture(0, g_pTexture1);
g_pd3dDevice->SetTexture(1, g_pTexture2);
g_pd3dDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0 );
g_pd3dDevice->SetTextureStageState(0, D3DTSS_COLOROP, g_txblend1);
g_pd3dDevice->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 1 );
g_pd3dDevice->SetTextureStageState(1, D3DTSS_COLOROP, g_txblend2);
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DirectX 9 nillsoft Библиотеки 15 17.01.2014 17:02
Учу С++ & DirectX moka C++ 27 04.01.2010 01:27
Directx 8 pax C++ 6 10.01.2008 23:27
Смешивание текстур в Blitz3D JVSh 3D-программирование 0 21.11.2006 10:10


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


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