Ottenere livello di programmazione Caps dispositivo per DirectX 6.1 (DDraw4)

StackOverflow https://stackoverflow.com/questions/1961386

  •  21-09-2019
  •  | 
  •  

Domanda

Le scrivo ganci Windows32 intorno DirectX 6.1 libreria per DirectX 9.0c; L'idea è di sostituire tutte le chiamate a dx 6.1 dispositivo 3D con chiamate a 9.0c diretto e iniettare un po 'di codice personalizzato, così vecchio gioco che sto Patching (99' anno) sarà in grado di utilizzare shader, post-effetti, ecc.

Il vecchio dispositivo 3D DX 6.1 è stato creato con la creazione di moduli DDraw. Gioco è quindi enumerazione tappi dispositivo. Nel mio modulo l'intero modulo DDraw è skiped e vista 3D viene inizializzato. Così ho problema in quanto non riesco a dare al gioco tappi dispositivo Ddraw4 che richiede come non ho dispositivo DDraw a tutti!

Quindi la mia domanda è come ottenere tappi dispositivo DDraw4 senza inizializzare dispositivo DDraw4. Forse sarà sufficiente per creare la lista fissa e mangimi per il gioco, ma non ho idea di quello che dovrebbe essere su quella lista (ho dato quello che ho pensato che dovrebbe essere, e il gioco uscito - logger ha dimostrato è stato solo dopo le protezioni dei dispositivi controllato)

È stato utile?

Soluzione 2

La soluzione è stata un po 'grezza, ma soprattutto -. Sta lavorando in modo impeccabile

ho scritto piccola utility self-contained, che inizializza DDraw 6.1, che ottiene le protezioni dei dispositivi, poi discarica al file su disco (tappi dispositivo è Plain Old C struttura del formato, quindi il risparmio è davvero semplice) e si chiude . Allora posso leggere il file tappi dispositivo dal disco e restituirlo quando l'applicazione mi chiede per loro.

Altri suggerimenti

Non ho mai provato questo, ma si potrebbe provare quanto segue. Dando per scontato che non si ha il 6.1 SDK, si potrebbe creare il DDCAPS struttura (il DirectDraw uno) da soli (è fondamentalmente solo DWORD), quindi ottenere le capacità ( D3DCAPS9 ) utilizzando il DX9 GetDeviceCaps funzione. Avanti, prendere i valori necessari dai tappi acquisiti (utilizzando DX9) e impostare i valori equivalenti per DirectDraw nella struttura DDCAPS. Si potrebbe quindi alimentare questa struttura caps popolata al gioco. Qualche distinguo - come lei ha ricordato, non si sa che cosa ha bisogno specifico, quindi è una specie di singhiozzo (se non si ha il codice sorgente). Inoltre, non ci può essere un 1: mappatura 1 per i valori di tappi di struttura (tra DX9 e DDraw). Infine - Questo si lega con non avendo il 6.1 SDK - se non si conoscono i valori di bandiera, si potrebbe impostare un flag in modo non corretto quando si impostano i valori secondo i tappi acquisite. Come ho già detto, questo può essere lontano (o richiedono un sacco di lavoro da detective), ma ho pensato che potrebbe essere qualcosa che si potrebbe provare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top