Toon posts:

[C++ + DX8] Ddraw gebruiken in DirectX8

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben nu 2 dagen bezig samen met een andere gast om een spelletje te programmeren. Hiervoor gebruiken we Ddraw uit DirectX voor de graphics. We proggen op zijn computer met de DX7 SDK, en heeft dus nog wel Ddraw.lib, maar in DX8 bestaat die library niet meer. En op mijn bak, waar alleen maar de DX8 SDK staat, kan ik geen ddraw interfaces aanvragen.. :'(

Ik heb gehoord dat je DX7-only kan programmeren in DX8, maar ik kan nergens vinden hoe. Als dat zo is, kan ik dan in DX8 gewoon Ddraw weer gebruiken?

Iemand ervaring hiermee?
Of zal ik gewoon maar de DX7 SDK ernaast installeren?

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
Ik heb het gebruikt... met DX8 libs... ik heb nu niet de beschikking over m'n source, morgen (= zaterdag) wel. Ik zal morgen wel wat code posten, ok?

Oh ja, ik gebruik alleen maar een backbuffer en een blit ervan, dus niet veel soeps... maar het werkt... op alle systemen die ik getest heb behalve één...

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

de libs kun je wel gebruiken van DX8, maar volgens mij heb je nog wel de headers van DX7 nodig om te ontwikkelen (waar je dus zo aan kan komen :))

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Ik dacht ooit ergens gehoord te hebben dat ze in DirectX 9 DirectDraw toch weer als een apart deel gaan beschouwen.

Lijkt mij wel een goed plan, als je kijkt naar al die mensen die zoeken naar DDraw7 docs en headers..

Verwijderd

Topicstarter
Thenx allemaal!

Ik ga het ff proberen met een oude ddraw.h.

Als het spel af is (bedoeling is einde dit jaar, het is ook vrij simpel...) dan zal ik een linkje posten.

Verwijderd

Hier een voorbeeld (echter wel een c-voorbeeld). Dit is met de DX8 libs gebakken, maar versie 7 functies worden gebruikt. Van de functies zonder de versie erbij weet ik niet welke versie er gepakt wordt (dat zal dan wel versie 8 zijn), en ik zou ook niet weten of dat nog probemen zou kunnen geven, DX8 en DX7 functies door elkaar, maar goed, kijk maar even:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
hr = DirectDrawCreate(NULL, &glpDD, NULL);

hr = IDirectDraw7_SetCooperativeLevel(glpDD, hWnd, DDSCL_NORMAL);

hr = IDirectDraw7_CreateSurface(glpDD, &ddsd, &glpDDSurface, NULL);

hr = IDirectDraw7_CreateClipper(glpDD, 0, &glpDDClipper, NULL);

hr = IDirectDrawClipper_SetHWnd(glpDDClipper, 0, hWnd);

hr = IDirectDrawSurface7_SetClipper(glpDDSurface, glpDDClipper);

if (IDirectDrawSurface_IsLost(glpDDSurface) == DDERR_SURFACELOST)
    IDirectDrawSurface_Restore(glpDDSurface);

if (IDirectDrawSurface_IsLost(glpDDBackbuffer) == DDERR_SURFACELOST)
    IDirectDrawSurface_Restore(glpDDBackbuffer);

IDirectDrawSurface_Lock(glpDDBackbuffer, NULL, &ddsd, DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR, NULL);

hr = IDirectDrawSurface_Unlock(glpDDBackbuffer, NULL);

hr = IDirectDrawSurface_Blt(glpDDSurface, &rcDst, glpDDBackbuffer, &rcSrc, DDBLT_WAIT, NULL);

IDirectDraw7_Release(glpDD);

Als hier iets _verkeerds_/onlogisch in staat, post het dan even, leer ik er ook nog wat van :)

Verwijderd

check flipcode voor wat articles en gamasutra heeft er ook wat

  • razor-x
  • Registratie: Februari 2001
  • Laatst online: 05-06 07:37
(jarig!)
In dx8 zit directdraw en direct3d in 1 , als je ddraw wilt gebruiken kan je beter 7 aanspreken

(dacht ik iig,weet het bijna zeker ;))

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

ja het idee van microsoft is dat als je iets als ddraw wilt gebruiken, dat je dan gewoon de d3d api functies gebruikt om bitmaps te tekenen enzo (wat dat is sneller)

toch waren veel mensen hier niet zo blij mee :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 19-09 17:21
Heeft iemand daar een voorbeeld van? Ik zie bij de code samples van d3d eigenlijk alleen maar 3d applicaties.

Dus hoe ik net zoals bij DD naar een surface wat pixels schrijf en dat dan blit, hoe je dat dan met d3d moet doen.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


Verwijderd

Hier (op gamedev) staat een tutorial '2D rendering with DirectX 8', mischien dat je daar wat aan hebt.

Ik hou het zelf voorlopig lekker bij DX7. :)

Verwijderd

Ik hou het voortaan gewoon lekker nog steeds bij OpenGL :)

  • SG
  • Registratie: Januari 2001
  • Laatst online: 23-09 11:40

SG

SG surft naar info hardewaren

Je kan de DX7 SDK toch ook gebruiken met de DX8 runtime

X399 Taichi; ThreadRipper 1950X; 32GB; VEGA 56; BenQ 32" 1440P | Gigbyte; Phenom X4 965; 8GB; Samsung 120hz 3D 27" | W2012SER2; i5 quadcore | Mac mini 2014 | ATV 4g | ATV 4K


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 09 september 2001 16:19 schreef Liquidus het volgende:
Ik hou het voortaan gewoon lekker nog steeds bij OpenGL :)
maar met opengl kun je niet doen wat je met directx WEL kan (de wondere wereld van frame buffer access) :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • Marcj
  • Registratie: November 2000
  • Laatst online: 23-09 11:31
Op zondag 09 september 2001 20:06 schreef OiSyN het volgende:

[..]

maar met opengl kun je niet doen wat je met directx WEL kan (de wondere wereld van frame buffer access) :)
Wat is het voordeel van frame buffer access??
(Ik kan nu alleen nog in OpenGL programmeren, maar ik wil straks ook DirectX 8 leren :))

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

nou je kunt met de hand pixels zetten enzo. Dus op die manier kun je een software-renderer schrijven of andere leuke effecten doen.

De framebuffer is in principe gewoon een array van pixels, geordend van links naar rechts, van boven naar onder

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Als je alleen ff snel wat wil uit proberen met een 32bit framebuffer is tinyptc reuze praktish, library heeft 3 calls open,update en close geen geneuzel met allerlei vage directX/gdi init calls gewoon init en klaar.. voor wat grotere projecten (lees meer dan ff wat uit proberen) lijkt het me niet zo praktish maargoed ieder zijn ding..

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Op zondag 09 september 2001 23:31 schreef Yarvieh het volgende:
Als je alleen ff snel wat wil uit proberen met een 32bit framebuffer is tinyptc reuze praktish, library heeft 3 calls open,update en close geen geneuzel met allerlei vage directX/gdi init calls gewoon init en klaar.. voor wat grotere projecten (lees meer dan ff wat uit proberen) lijkt het me niet zo praktish maargoed ieder zijn ding..
ah nee dat meen je niet
ik heb ruzie met die gast die dat gemaakt heeft :)

na ja, ruzie, we mogen elkaar niet, laat ik het zo zeggen :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Op zondag 09 september 2001 23:40 schreef OiSyN het volgende:
ah nee dat meen je niet
ik heb ruzie met die gast die dat gemaakt heeft :)
na ja, ruzie, we mogen elkaar niet, laat ik het zo zeggen :)
Wil ik weten waar het over ging? >:)

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

ik weet niet of jij dat wilt weten :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Goede roddel is nooit weg toch? maare voor we al te ver offtopic raken, nog tips voor simple libs van lui waar je geen ruzie mee hebt gehad?

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 22-09 20:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

1) ik maak nooit gebruik van andermans libs
2) ik heb met iedereen ruzie ;)

dus... uhm... nee :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.

Pagina: 1