home *** CD-ROM | disk | FTP | other *** search
Wrap
#define STRICT // Includes standard Windows #include <windows.h> #include <windowsx.h> #include <time.h> #include <stdlib.h> #include <malloc.h> #include <memory.h> #include <stdio.h> // Includes D3D #define D3D_OVERLOADS #include <ddraw.h> #include <d3d.h> #include <d3dx.h> #include "D3DEnum.h" // Constantes #include "const.h" // Types #include "types.h" // Variables globales HINSTANCE hInst; LPDIRECTDRAW7 lpDD = NULL; // Interface IDirectDraw7 LPDIRECT3D7 lpD3D = NULL; // Interface IDirect3D7 LPDIRECTDRAWSURFACE7 lpddsRender = NULL; // Surface Rendering LPDIRECTDRAWSURFACE7 lpddsBackBuffer = NULL; // Surface Backing store LPDIRECTDRAWSURFACE7 g_pddsZBuffer = NULL; // Surface Z-buffer LPDIRECT3DDEVICE7 lpd3dDevice = NULL; // Device D3D RECT sRectangle; // Rectangle courant DDSURFACEDESC2 ddsd; GUID gDeviceGUID; BOOL bActive = FALSE; // Application active (non minimisée) BOOL bReady = FALSE; // Application prête à faire un render BOOL bGrid = FALSE; // Grille o/n float fGridSize = 1.0; // Pas de la grille D3DVECTOR Observer( 0.0f, 0.0f, 9.0f ), // Coord. observateur par défaut Target( 0.0f, 0.0f, 0.0f ); // Coord. cible par défaut D3DVECTOR Cursor1( 5.0f, -5.0f, 5.0f ), // Coord. curseur 1 par défaut Cursor2( 1.0f, 1.0f, 1.0f ), // Coord. curseur 2 par défaut Cursor3( -1.0f, -1.0f, -1.0f ); // Coord. curseur 3 par défaut D3DVECTOR vTracker; D3DMATRIX matView, // Matrice caméra matProj, // Matrice caméra matWorld; // Matrice caméra float fXmin = -10., // Espace de travail triview : X min fXmax = 10., // Espace de travail triview : X max fYmin = -10., // Espace de travail triview : Y min fYmax = 10., // Espace de travail triview : Y max fZmin = -10., // Espace de travail triview : Z min fZmax = 10.; // Espace de travail triview : Z max SkulptGadget gAddPoint, // Gadget Sculpt3D : Ajouter point gCenter, // Gadget Sculpt3D : Centrer la vue sur le curseur gGoDown, // Gadget Sculpt3D : Descendre (dans la vue courante) gGoLeft, // Gadget Sculpt3D : Aller à gauche (idem) gGoUp, // Gadget Sculpt3D : Monter (idem) gGoRight, // Gadget Sculpt3D : Aller à droite (idem) gGrab, // Gadget Sculpt3D : Activer pince gMakeTri, // Gadget Sculpt3D : Créer triangle (entre les 3 curseurs) gReverse, // Gadget Sculpt3D : ??? gRotAnti, // Gadget Sculpt3D : Rotation anti clockwise gRotClock, // Gadget Sculpt3D : Rotation clockwise gZoomIn, // Gadget Sculpt3D : Zoomer en avant gZoomOut; // Gadget Sculpt3D : Zoomer en arrière HWND hWndPersp, // Handle fenêtre vue 3D hWndTop, // Handle fenêtre vue de dessus hWndFace, // Handle fenêtre vue de face hWndRight, // Handle fenêtre vue de droite hWndMenu, // Handle fenêtre menu hWndTrace; // Handle sous-fenêtre listbox trace gSommet Vertices[XDC_NUMPT]; // Tableau global de points gEdge Edges[XDC_NUMEDGE]; // Tableau global de segments gTri Triangles[XDC_NUMTRI]; // Tableau global de triangles gLamp Lampes[XDC_NUMLAMP]; // Tableau global de lampes gObject Objects[XDC_NUMOBJECTS]; // Tableua global d'objets gMtrl Materials[XDC_NUMMTRL]; int iVertLastUsed = -1, iVertFirstAvailable = 0; int iEdgeLastUsed = -1, iEdgeFirstAvailable = 0; int iTriaLastUsed = -1, iTriaFirstAvailable = 0; int iLampLastUsed = -1, iLampFirstAvailable = 0; int iObjtLastUsed = -1, iObjtFirstAvailable = 0; int iMtrlLastUsed = -1, iMtrlFirstAvailable = 0; BOOL bCoords = FALSE; // Afficher les coordonnées o/n D3DCOLOR cAmbient = 0xffffffff, // Couleur lumière ambiante cBack = 0x00500000; // Couleur arrière plan DWORD dFillMode = D3DFILL_SOLID; // Mode de dessin 3D par défaut (point, fil, face) DWORD dZBuf = D3DZB_TRUE; // Z-Buffer (o/n) BOOL bAlpha = FALSE; // Alpha blending o/n BOOL bSpecular = FALSE; DWORD dCull = D3DCULL_CCW; BOOL bAntialias = TRUE; char *sLogo = "wcLogo"; // Nom de la classe de fenêtre logo char *sMenu = "wcMenu"; // Nom de la classe de fenêtre menu char *sPersp = "wcPersp"; // Nom de la classe de fenêtre 3D char *sPlanar = "wcPlanar"; // Nom de la classe de fenêtre 2D char cTool = XDC_TOOL_NONE; // Outil courant : NONE, GRAB, SELECT, CURVE, MAGNET D3DEnum_DeviceInfo *m_pDeviceInfo; char cTitle[255], cString[255]; long lWActive; // HWND de la fenêtre 2D active (face, top, right) int iHoles; // Nombre de trous dans une courbe à trianguler HWND hHoleDlgActive = NULL; // Booléen indiquant à la proc de gestion des fenêtres 2D si les clics doivent être passés à la dlgproc de gestion des trous dans le fill pour les identifier double dHoles[XDC_MAX_HOLES * 2]; // suite de iHoles couples XY des trous SMALLBOOL bFillAndRemoveEdges = TRUE; // Si TRUE, fill() doit supprimer les arêtes après triangulation d'une courbe BOOL bTracking = FALSE; // Poursuite curseur en cours o/n (WM_LBUTTONDOWN / WM_MOUSEMOVE) #ifdef _AMIGA_ struct Library *GadToolsBase = (struct Library *) NULL; struct Library *UtilityBase = (struct Library *) NULL; struct Library *AslBase = (struct Library *) NULL; struct Library *AmigaGuideBase = (struct Library *) NULL; struct Library *DataTypesBase = (struct Library *) NULL; struct Library *IconBase = (struct Library *) NULL; struct Library *CyberGfxBase = (struct Library *) NULL; W3D_Context *hW3DContext = NULL; W3D_Scissor sScissor; ULONG l2DWinSigMask; #ifndef __PPC__ struct Library *Warp3DBase = (struct Library *) NULL; #else struct Library *Warp3DPPCBase = (struct Library *) NULL; #endif struct Task *hApp = (struct Task *) NULL; #endif