begin process at 2012 05 29 05:46:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

DirectX

 > 

Face transparente


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Face transparente

samedi 17 mars 2007 à 03:09:05 | Face transparente

bizzard4

Membre Club
Bonjour

J'explique mon problème. J'ai fait un cube à la main avec 36 vertex. J'ai mit une couleur différente sur chaque face mais j'ai bizarement j'ai des faces transparentes. Comme si DirectX n'était pas capable de savoir quelle face est dévant et derrière.

Pourtant :
g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

Mon cullmode est configurer de façon a afficher les 2 faces de mes triangles.

Ici j'ai une image :

bon.JPG

Le face délémité en rouge devrait être verte mais bizarement je vois les 2 faces d'en dessous sont verte sauf elle du bas Je ne comprend vraiment pas.

Et la face délémiter en blanc devrait elle être rouge. Mais nous devrions pas la voir parce qu'elle est en arrière.

Si quelqu'un connaît la solution.

~~ Cordialement Francois Gingras
samedi 17 mars 2007 à 13:33:59 | Re : Face transparente

juju12

Je comprends pas trop ce que tu veux faire :
pour que justement seules les faces visibles soient affichées, il faut utiliser le culling. Sinon DX va même pas chercher à savoir ce qu'on est censé voir, il va tout afficher.
Si tu pouvais spécifier le résultat que tu aimerais obtenir...
Autre chose en passant : utilise un indexbuffer, y aura que 8 points à stocker...
samedi 17 mars 2007 à 13:37:34 | Re : Face transparente

sam20

Fait voir ton code.
Tu es sur de ne pas avoir dessiner de faces a l'envers?.
samedi 17 mars 2007 à 14:35:21 | Re : Face transparente

bizzard4

Membre Club
Bonjour

Je veux seulement faire un cube opaque. Parce que la comme tu le voie sur le screen shot le carré délémiter en rouge on le voie pas mais sa couleur est sur la face du fond et sur la face du côté.

Voici le code pour mon cube :

    CUSTOMVERTEX g_Vertices[3600];

    // Création de Vertices Manuelle
    int k = 0;
    // Fond :: Rouge
    g_Vertices[0].position = D3DXVECTOR3(-5.0f, -5.0f, 0.0f);
    g_Vertices[1].position = D3DXVECTOR3(5.0f, -5.0f, 0.0f);
    g_Vertices[2].position = D3DXVECTOR3(-5.0f, 5.0f, 0.0f);

    g_Vertices[3].position = D3DXVECTOR3(5.0f, -5.0f, 0.0f);
    g_Vertices[4].position = D3DXVECTOR3(5.0f, 5.0f, 0.0f);
    g_Vertices[5].position = D3DXVECTOR3(-5.0f, 5.0f, 0.0f);
    for (k = 0; k < 6; k++)
    {
        g_Vertices[k].color = D3DCOLOR_XRGB(255, 0, 0);
    }

    // Top :: Vert
    g_Vertices[6].position = D3DXVECTOR3(-5.0f, -5.0f, -10.0f);
    g_Vertices[7].position = D3DXVECTOR3(5.0f, -5.0f, -10.0f);
    g_Vertices[8].position = D3DXVECTOR3(-5.0f, 5.0f, -10.0f);

    g_Vertices[9].position = D3DXVECTOR3(5.0f, -5.0f, -10.0f);
    g_Vertices[10].position = D3DXVECTOR3(5.0f, 5.0f, -10.0f);
    g_Vertices[11].position = D3DXVECTOR3(-5.0f, 5.0f, -10.0f);
    for (k = 6; k < 12; k++)
    {
        g_Vertices[k].color = D3DCOLOR_XRGB(0, 255, 0);
    }

    // Face Devant :: Bleu
    g_Vertices[12].position = D3DXVECTOR3(-5.0f, -5.0f, 0.0f);
    g_Vertices[13].position = D3DXVECTOR3(5.0f, -5.0f, 0.0f);
    g_Vertices[14].position = D3DXVECTOR3(-5.0f, -5.0f, -10.0f);

    g_Vertices[15].position = D3DXVECTOR3(5.0f, -5.0f, 0.0f);
    g_Vertices[16].position = D3DXVECTOR3(5.0f, -5.0f, -10.0f);
    g_Vertices[17].position = D3DXVECTOR3(-5.0f, -5.0f, -10.0f);
    for (k = 12; k < 18; k++)
    {
        g_Vertices[k].color = D3DCOLOR_XRGB(0, 0, 255);
    }

    // Face derrìère :: Rose
    g_Vertices[18].position = D3DXVECTOR3(-5.0f, 5.0f, 0.0f);
    g_Vertices[19].position = D3DXVECTOR3(5.0f, 5.0f, 0.0f);
    g_Vertices[20].position = D3DXVECTOR3(-5.0f, 5.0f, -10.0f);

    g_Vertices[21].position = D3DXVECTOR3(5.0f, 5.0f, 0.0f);
    g_Vertices[22].position = D3DXVECTOR3(5.0f, 5.0f, -10.0f);
    g_Vertices[23].position = D3DXVECTOR3(-5.0f, 5.0f, -10.0f);
    for (k = 18; k < 24; k++)
    {
        g_Vertices[k].color = D3DCOLOR_XRGB(255, 0, 255);
    }

    // Face Gauche :: Cyan
    g_Vertices[24].position = D3DXVECTOR3(-5.0f, 5.0f, 0.0f);
    g_Vertices[25].position = D3DXVECTOR3(-5.0f, -5.0f, 0.0f);
    g_Vertices[26].position = D3DXVECTOR3(-5.0f, 5.0f, -10.0f);

    g_Vertices[27].position = D3DXVECTOR3(-5.0f, -5.0f, 0.0f);
    g_Vertices[28].position = D3DXVECTOR3(-5.0f, -5.0f, -10.0f);
    g_Vertices[29].position = D3DXVECTOR3(-5.0f, 5.0f, -10.0f);
    for (k = 24; k < 30; k++)
    {
        g_Vertices[k].color = D3DCOLOR_XRGB(0, 255, 255);
    }

    // Face Droite
    g_Vertices[30].position = D3DXVECTOR3(5.0f, 5.0f, -10.0f);
    g_Vertices[31].position = D3DXVECTOR3(5.0f, -5.0f, 0.0f);
    g_Vertices[32].position = D3DXVECTOR3(5.0f, -5.0f, -10.0f);

    g_Vertices[33].position = D3DXVECTOR3(5.0f, -5.0f, 0.0f);
    g_Vertices[34].position = D3DXVECTOR3(5.0f, 5.0f, 0.0f);
    g_Vertices[35].position = D3DXVECTOR3(5.0f, 5.0f, -10.0f);
    for (k = 30; k < 36; k++)
    {
        g_Vertices[k].color = D3DCOLOR_XRGB(255, 255, 0);
    }

    // Create the vertex buffer.
    if( FAILED( g_pd3dDevice->CreateVertexBuffer( 3600*sizeof(CUSTOMVERTEX),
                                                  0, D3DFVF_CUSTOMVERTEX,
                                                  D3DPOOL_DEFAULT, &g_pVB, NULL ) ) )
    {
        return E_FAIL;
    }

~~ Cordialement Francois Gingras
samedi 17 mars 2007 à 15:28:47 | Re : Face transparente

sam20

 Vertex g_Vertices[] =
{
{-1.0f, 1.0f,-1.0f},
 { 1.0f, 1.0f,-1.0f},
 {-1.0f,-1.0f,-1.0f },
 { 1.0f,-1.0f,-1.0f},
 
 {-1.0f, 1.0f, 1.0f},
 {-1.0f,-1.0f, 1.0f},
 { 1.0f, 1.0f, 1.0f},
 { 1.0f,-1.0f, 1.0f},
 
 {-1.0f, 1.0f, 1.0f},
 { 1.0f, 1.0f, 1.0f},
 {-1.0f, 1.0f,-1.0f },
 { 1.0f, 1.0f,-1.0f},
 
 {-1.0f,-1.0f, 1.0f},
 {-1.0f,-1.0f,-1.0f},
 { 1.0f,-1.0f, 1.0f,},
 { 1.0f,-1.0f,-1.0f,},

 { 1.0f, 1.0f,-1.0f },
 { 1.0f, 1.0f, 1.0f},
 { 1.0f,-1.0f,-1.0f},
 { 1.0f,-1.0f, 1.0f},
 
 {-1.0f, 1.0f,-1.0f},
 {-1.0f,-1.0f,-1.0f},
 {-1.0f, 1.0f, 1.0f },
 {-1.0f,-1.0f, 1.0f }
};

 g_pd3dDevice->CreateVertexBuffer( 24*sizeof(Vertex),0, CUSTOMVERTEX,
                                      D3DPOOL_DEFAULT, &g_pVertexBuffer, NULL );

g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP

samedi 17 mars 2007 à 17:44:00 | Re : Face transparente

juju12

Réponse acceptée !

Comme je disais auparavant,il faut utiliser le culling car ici comme tu affiches tout, il dessine les faces supposées non visibles par dessus les visibles et c'est le bazard. Faut utiliser D3DCULL_NONE seulement quand on veut voir ce qu'il y a derrière (ex.faces translucides etc..)
Ici :
g_pd3dDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
et déclarer tes triangles en conséquence (sens trigo ici).

samedi 17 mars 2007 à 20:14:53 | Re : Face transparente

bizzard4

Membre Club
Parfait j'ai comprit maintenant !

~~ Cordialement Francois Gingras
samedi 17 mars 2007 à 21:13:40 | Re : Face transparente

bizzard4

Membre Club
Pour sam20 :

Merci mais pour les besoins de la cause je suis en D3DPT_TRIANGLELIST

~~ Cordialement Francois Gingras


Cette discussion est classée dans : faces, transparente, face, bizarement, cullmode


Répondre à ce message

Sujets en rapport avec ce message

[cull facing] Besoin d'une petite précision [ par jcloupgarou ] Bonjour,Je fait un modeleur 3d et dans ce cadre les objets, ainsi que la camera ne sont pas fixes et peuvent notemment tourner. Dans ce sens, que sign OpenGL/Nehe leçon8 --> problem blending [ par MrdJack ] Bonjour, j'ai un petit ennui avec le blending sous OpenGL, pour faire simple, disons que j'utilise le code source de la leçon 8 de NeHe je souhaite af Errreur [ par RM50Man ] Mon code ne marche pas: Le compilateur devcpp me met build error 1 #include /* contient déjà et */ #include #include #include void reset Fenêtre inselectionnable (transparente / actions utilisateurs) [ par Galmiza ] Bonjour, Je souhaite afficher une application windows toute bête, légerement transparente, mais qui ne gêne pas les interactions utilisateur-autres f opengl en C front back et.... [ par chipryot ] bonjour je "programme" en devc++ et je me suis mis à opengl et j'ai un problème.En fait j'ai un cube et je souhaite que la face 'FRONT' sois d'un tel indexation des triangles composant une surface 3D [ par jcloupgarou ] Bonjour, je fais une appli de modélisation 3D, avec la possibilité de loader des modeles 3D de différents formats.Un objet 3D est un ensemble de faces Rendre une fentre transparente [ par supergrey ] Bonjour, je voudrais savoir comment rendre la fenetre d'un programme externe (comme IE, blocnote...) transparente.J'ai trouvé des sources rendre la fe fenetre transparente [ par pipo ] je cree une fenetre transparente avec WS_EX_TRANSPARENT mais le probleme c'est que quand je deplace ma fenetre le fond de la fenetre (le bureau de win probleme de fenetre transparente [ par pipo ] je cree une fenetre transparente avec WS_EX_TRANSPARENT mais le probleme c'est que quand je deplace ma fenetre le fond de la fenetre (le bureau de win Code pour steph [ par SmallToad ] Voici le code, 222 lignes. ca va etre moin lour que sur le chat, .#include #include #include #include #include


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,061 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales