CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Directdraw : petit souci...help

Darkiller
Darkiller
Niveau 9
01 mars 2003 à 19:30:33

je ve jute une petite precision:

j´ai fait un ptit prog qui lance une fenetre windows et qui initialise un objet iDirectDraw et les deux surfaces classiques(primary et back) et je met le mode plein ecran, et je change la resolution...
pis apres je release les surfaces, je fait RestoreDisplayMode et je release l´objet IdirectDraw.

ma fenetre ce ferme, mais la taille des autres fenetres changent une fois sur deux... c ´est a dire que ya des fenetre en plein ecran qui n´occupe qu´un quart de l´ecran etc...il suffit alors de cliquer 2 fois sur la chtite case plein ecran et c regler...

je voudrais juste si ce ptit bug et du a mon prog, si c du a une mauvaise desinitialisation de directdraw...

chickendaddy
chickendaddy
Niveau 5
01 mars 2003 à 22:29:28

de ma par je ne travail pas sous direct X, je work en opengl, mais c´est très rare d´obtenir une réponse ici... moi je te conseille des sites comme msdn.microsoft.com

Lightness1024
Lightness1024
Niveau 10
01 mars 2003 à 23:16:33

peu pas t´aider je connais pas directdraw vu ke g appris DX k´a partir de la version 8.

ca arrive ke kan on quitte mal un prog graphique ca fasse ca en effet donc ca doit venir d´un blem dans ta maniere d´arreter le programme.

Darkiller
Darkiller
Niveau 9
02 mars 2003 à 13:39:13

merci lightness
puis comment on fait de la 2d avec directX8 ? ?
pake je viens juste de l´avoir, g regardé vite fait mais ils ont enlever l´objet directdraw . ..etc

c quelle interface qui faut utiliser??,

merci d´avance

GamerFou2
GamerFou2
Niveau 7
02 mars 2003 à 17:36:33

Tu peux toujours réutiliser les anciennes interface DirectX si jamais . .. jusqu´à la 7 tu as accès à DirectDraw sinon tu peux toujours te débrouiller avec de la 3D ( tu auras d´ailleurs plus d´effets à ta disposition en passant par la 3D).
Suffit de créer tes objets à base de polyonges texturés avec tes sprites c´est pas si dur que ca.

exemple :
http://www.gamedev.net/reference/articles/article1608.asp

Lightness1024
Lightness1024
Niveau 10
03 mars 2003 à 13:43:12

oui mais c pas genial de faire ca.

pour faire de la 2D ben fo faire de la 3D plate !

je m´explique tu créer des quaternions en mode de vertex transformé ( FVF_XYZRHW) et tu peux choisir un remplissage unique ( vertex shading flat) dégradé ( vertex shading gouraud ( attention on crois que phong peut etre utilisé mais en réalité non il n´est pas géré)) ou alors tu peut mettre une texture ( flag FVF_TEX1 a rajouter au flexible vertex format)
tu peut créer des formes autres que rectangulaire grace aux polygones.
tu peux aussi tracer des lignes si tu fait un DrawPrimitive avec l´argument LINE_STRIP ou LINE_LIST.

ya aussi un truc pas mal qui s´appelle D3DXSprite qui est une interface COM des extensions DirectX ( les D3DX ! ) qui permet de charger des images en 2D sans avoir a faire le quaternions nous meme c´est rapide et pratique on peux redimensionner verticalement horizontalement, faire des rotations changer la couleur ( grace a des methodes de l´interface ! ) et meme charger des images png avec un channel alpha ( sans oublier d´enclencher l´alpha blending dans les SetRenderState)

franchement si vous avez ca dans OpenGL et bien je veux bien le respecter !

@#; Lightness1024!

Lightness1024
Lightness1024
Niveau 10
03 mars 2003 à 13:45:38

petit PS:
dans les coordonnées de tes vertex:
met toujours 0 dans le RHW ( reciprocal of homogeneous W) et tu peux mettre 0 dans la coordonnée z mais il y aura des superpositions harsareuse.
tu peux créer des plans ( si tu oublies pas d´activer le Zbuffer) en changant les valeurs des coordonnées z.

JeanYvesYves
JeanYvesYves
Niveau 10
03 mars 2003 à 13:52:41

vérifie que tu initialises correctement : moi j´utilise encore DirectX7 :

HRESULT InitDDRAW(HINSTANCE hInstance,int nCmdShow,LPDIRECTDRAWSURFACE7 &,int x,int y)
{
HWND hWnd;
WNDCLASS wc;
DDSURFACEDESC2 ddsd;
DDSCAPS2 ddscaps;
HRESULT hRet;

// Set up and register window class
wc.style = CS_HREDRAW | CS_VREDRAW;
wc.lpfnWndProc = WindowProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = 0;
wc.hInstance = hInstance;
wc.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MAIN_ICON));
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = ( HBRUSH ) GetStockObject(BLACK_BRUSH);
wc.lpszMenuName = NAME;
wc.lpszClassName = NAME;
RegisterClass(&);

// Create a window
hWnd = CreateWindowEx(WS_EX_TOPMOST,
NAME,
TITLE,
WS_POPUP,
0,
0,
GetSystemMetrics(SM_CXSCREEN),
GetSystemMetrics(SM_CYSCREEN),
NULL,
NULL,
hInstance,
NULL);
if ( !hWnd)
return FALSE;
ShowWindow(hWnd, nCmdShow);
UpdateWindow(hWnd);
SetFocus(hWnd);

//////////////////////////////////////////////////
/////////////////////////
// Create the main DirectDraw object

//////////////////////////////////////////////////
/////////////////////////
hRet = DirectDrawCreateEx(NULL, ( VOID**)&_pDD, IID_IDirectDraw7, NULL);
if ( hRet ! = DD_OK)
return InitFail(hWnd, hRet, "DirectDrawCreateEx a Echoué");

// Get exclusive mode
hRet = g_pDD->SetCooperativeLevel(hWnd, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
if ( hRet ! = DD_OK)
return InitFail(hWnd, hRet, "SetCooperativeLevel a Echoué");

// Set the video mode to 640x480x8
hRet = g_pDD->SetDisplayMode(x, y, deep, 0, 0);
if ( hRet ! = DD_OK)
return InitFail(hWnd, hRet, "Votre carte ne supporte pas cette résolution");

// Create the primary surface with 1 back buffer
ZeroMemory(&, sizeof(ddsd));
ddsd.dwSize = sizeof(ddsd);
ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
DDSCAPS_FLIP |
DDSCAPS_COMPLEX;
ddsd.dwBackBufferCount = 1;
hRet = g_pDD->CreateSurface(&, &_pDDSPrimary, NULL);
if ( hRet ! = DD_OK)
return InitFail(hWnd, hRet, "Création de surface principale a échoué");

// Get a pointer to the back buffer
ZeroMemory(&, sizeof(ddscaps));
ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
hRet = g_pDDSPrimary->GetAttachedSurface(&, &_pDDSBack);
bk=g_pDDSBack;
if ( hRet ! = DD_OK)
return InitFail(hWnd, hRet, "Surface attachée a échoué");
return DD_OK;
}

arnaud81
arnaud81
Niveau 7
03 mars 2003 à 14:18:20

pour la 2D, j utilise maintenant SDL...lol

certes, ca offre moins de possibilite qu OpenGL ou DirectX en 2D ( cf commentaire de ligthness), mais qu est ce que c pratique ; )

Sous forums
  • Aide à l'achat Mac
  • Internet
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment