[ +/- ] [ Data/Hora: 19 Mai 2013, 15:49 ]


Criar um novo TópicoWrite comments Página 1 de 1   [ 9 posts ]
Autor Mensagem
 Assunto da Mensagem: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 09 Ago 2010, 23:02 
Membro

Registado: 08 Mai 2010, 22:12
Mensagens: 32
Localização: Porto Alegre - RS - Brasil
Opa. Estou tentando fazer uma espécie de console in game com o DX9.
A parte das fontes e texto já tá ok, agora eu estou tentando fazer um background para a janela do console. Minha idéia é fazer um fundo semi-transparente a partir de 2 triangulos q forman um quad.
A princípio seria só aplicar uma transparência na cor difusa do objeto, eu acho, mas não estou conseguindo acertar a transparência de jeito nenhum. E como não tenho muita esperiência com o D3D, vou pedir um help ae pra quem puder me ajudar.

Não sei se o problema está no fato de eu estar usando os vertices com cordenadas homogênias (D3DFVF_XYZRHW), é que desta maneira o quadrado do console fica sempre em primeiro plano, me pareceu + fácil que setar um projeção ortogonal.

Bom, oque eu tenho até agora:

Code:
struct Vertex
{
   float x, y, z, rhw;
   unsigned long color;
   static const unsigned long FVF = (D3DFVF_XYZRHW | D3DFVF_DIFFUSE);
};

unsigned short Indices[6] = { 0, 1, 2, 2, 3, 0 };

Vertex Window[4] =
{
   { 0.0f  , 0.0f  , 0.0f, 0.0f, D3DCOLOR_ARGB(50, 0, 0, 0),    },
   { 500.0f, 0.0f  , 0.0f, 0.0f, D3DCOLOR_ARGB(50, 0, 0, 0),   },
   { 500.0f, 500.0f, 0.0f, 0.0f, D3DCOLOR_ARGB(50, 0, 0, 0),  },
   { 0.0f  , 500.0f, 0.0f, 0.0f, D3DCOLOR_ARGB(50, 0, 0, 0),   },
};

// E na hora de renderizar:

GraphicSystem::Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);

// Aqui deveria acontecer o Alpha Blend ... Mas deve ter algum erro ... Não sei
GraphicSystem::Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
GraphicSystem::Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

GraphicSystem::Device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

GraphicSystem::Device->SetFVF(Vertex::FVF);
GraphicSystem::Device->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4, 2, Indices, D3DFMT_INDEX16, Window, sizeof(Vertex));

GraphicSystem::Device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);


Se alguém puder me dar uma ajuda, fico muito agradecido. Eu já tentei combinar alguns outros flags nas função, mas nada do quadrado ficar transparente...

Bom valeu pessoal. Até.


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 09 Ago 2010, 23:11 
Colaborador(a)
Avatar do Utilizador

Registado: 02 Set 2004, 20:01
Mensagens: 1801
Localização: São Carlos, SP
Eu faço do seguinte modo:
Code:
//diffuse color added (NEW)
#define D3DFVF_CUSTOMVERTEX (D3DFVF_XYZ |
                             D3DFVF_NORMAL |
                             D3DFVF_DIFFUSE |
                             D3DFVF_TEX1)

//structures
struct D3DVERTEX
{
float     fX,
          fY,
          fZ;
D3DVECTOR Normal;
DWORD     dwColor; //DWORD for color
float     fU,
          fV;
};


Code:
//depth buffer deactivated
m_pDirect3DDevice->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE);

//alpha blending enabled
m_pDirect3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
//source alpha
m_pDirect3DDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);
//destination alpha
m_pDirect3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);

m_pDirect3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_DIFFUSE);

_________________
Meu blog :) http://mateusvitali.wordpress.com/

Imagem


Topo
 Perfil  
 
The following user would like to thank Vitali for his or her post: Visitante
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 10 Ago 2010, 15:37 
Membro

Registado: 08 Mai 2010, 22:12
Mensagens: 32
Localização: Porto Alegre - RS - Brasil
Ah, valeu cara. Agora tá funcionando certinho.
Code:
GraphicSystem::Device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);

GraphicSystem::Device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
GraphicSystem::Device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);

// ******* Faltava essa linha aqui:  *******
GraphicSystem::Device->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);

GraphicSystem::Device->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

GraphicSystem::Device->SetFVF(Vertex::FVF);
GraphicSystem::Device->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4, 2, Indices, D3DFMT_INDEX16, Window, sizeof(Vertex));

GraphicSystem::Device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);

Foi só acressentar isso que ficou okey.

Valeu pela ajuda. Até mais.


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 10 Ago 2010, 16:19 
Colaborador(a)
Avatar do Utilizador

Registado: 02 Set 2004, 20:01
Mensagens: 1801
Localização: São Carlos, SP
;)


Só por curiosidade, tem como postar um print de como ficou?
vou começar a implementar um console na minha engine.

[]'s

_________________
Meu blog :) http://mateusvitali.wordpress.com/

Imagem


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 10 Ago 2010, 17:40 
Membro

Registado: 08 Mai 2010, 22:12
Mensagens: 32
Localização: Porto Alegre - RS - Brasil
Ai as duas imgs:
preg_replace($acronyms_match, $acronyms_repl, '[url]
http://img25.imageshack.us/i/console1o.jpg/
[/url]')
preg_replace($acronyms_match, $acronyms_repl, '[url]
http://img709.imageshack.us/i/console2.png/
[/url]')

Tá bem simples ainda. O meu foco principal é o cenário que aparece no fundo, estou carregando ele de um arquivo .bsp, do Quake 3. O console é mais pra debug e futuramante pra aceitar alguns comandos do usuário.

Falow.
T+


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 10 Ago 2010, 19:12 
Colaborador(a)
Avatar do Utilizador

Registado: 02 Set 2004, 20:01
Mensagens: 1801
Localização: São Carlos, SP
Po...legal ein cara :D

Podemos trocar umas ideias quanto ao Loader de BSP?


[]'s

_________________
Meu blog :) http://mateusvitali.wordpress.com/

Imagem


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa. (Resolvido)
MensagemEnviado: 11 Ago 2010, 14:46 
Membro

Registado: 08 Mai 2010, 22:12
Mensagens: 32
Localização: Porto Alegre - RS - Brasil
Claro, podemos sim. Esse loader de .bsp na verdade eu estou convertendo de OpenGL pra Direct3D. Eu comessei ele já faz um tempo com OGL, mas acabei parando, e agora que estou mexendo mais com o Direct3D, achei um boa recomessar.
Só tem a renderização do cenário por enquanto, falta fazer as colisões. Mas é um formato bacana pra jogos, só não sei se a id software ainda mantém o editor deles o q3radiant, pra modelar os mapas BSP.

Tem bastante material disponível na net sobre esse formato, eu anotei aqui uns links:

http://www.flipcode.com/archives/Simple_Quake3_BSP_Loader.shtml
http://www.vicampus.com/index.php?action=showtutorial&id=8
http://www.mralligator.com/q3/
http://bloody-blades.de/home/Project__Quake_3_BSP_Loader.html

E claro um lugar que eu sempre olho pra tirar alguma dúvida é no próprio souce do Quake3, acho que ainda deve ter disponível pra baixar no site da id.

[]'s
Guilherme_xyz


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 11 Ago 2010, 19:18 
Colaborador(a)
Avatar do Utilizador

Registado: 02 Set 2004, 20:01
Mensagens: 1801
Localização: São Carlos, SP
Opa, valew pelos materiais :D


Se puder e quiser me add no msn
vitalimateus@hotmail.com

[]'s

_________________
Meu blog :) http://mateusvitali.wordpress.com/

Imagem


Topo
 Perfil  
 
 Assunto da Mensagem: Re: Objetos Transparentes Com Cor Difusa ?
MensagemEnviado: 13 Ago 2010, 09:18 
Colaborador(a)
Avatar do Utilizador

Registado: 02 Set 2004, 20:01
Mensagens: 1801
Localização: São Carlos, SP
Achei um site interessante, não sei se você ja havia visto:
http://www.xbdev.net/3dformats/quake3bsp/index.php


[]'s

_________________
Meu blog :) http://mateusvitali.wordpress.com/

Imagem


Topo
 Perfil  
 
Mostrar mensagens anteriores:  Ordenar por  
Criar um novo TópicoWrite comments Página 1 de 1   [ 9 posts ]
Similar topics
Criar objetos dinâmicamente
Fórum: C/C++
Autor: leafar_barros
Respostas: 6
Mouse: Movimentação de Objetos
Fórum: Blitz Basic
Autor: Eduardo7
Respostas: 1
Conceitos de Objetos,Classes e Métodos
Fórum: Java
Autor: xdeme
Respostas: 3
Duvidas c++: objetos , operadores
Fórum: C/C++
Autor: ferhelloween
Respostas: 6
Troca de objetos/equipamentos durante o jogo
Fórum: Unity3D
Autor: DarthL
Respostas: 10
Topo


Quem está ligado:

Utilizador a ver este Fórum: Nenhum utilizador registado e 1 visitante


Criar Tópicos: Proibído
Responder Tópicos: Proibído
Editar Mensagens: Proibído
Apagar Mensagens: Proibído

Pesquisar por:
Ir para:  

cron


Powered by phpBB ©

Virtual Object Informtica Ltda. Fone/Fax: (15)3231-6840