JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=249210b0db4016dbe783e93faa02d9a9Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Surface erzeuegn

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
blackhunter
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 35
Wohnort: Herzberg am Harz
Medaillen: Keine

BeitragVerfasst am: 08.02.2003, 17:28    Titel: Surface erzeuegn Antworten mit Zitat

Ich habe da ein problem

wenn ich mit DDraw eine Surface erzeuge will brauch ich ja einen Zeiger auf das DDrawInterface.

Ich könnte ja alle Oberflächen jetzt gleich beim initalisieren erzeugen.
Das will ich da aber noch nicht.

Ich will sie erst im Verlauf des Programms erzeugen.
Nur da hab ich jetzt das Problem, dass ich keinen Zeiger auf das DDInterface habe.

Wie mache ich das nun?
Oder wann und wie erzeugt ihr eure Surfaces?
_________________
visit: www.theblacknet.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Ciceri
Super JLI'ler


Alter: 36
Anmeldedatum: 26.08.2002
Beiträge: 418
Wohnort: Wischhafen/in der nähe Hamburgs
Medaillen: Keine

BeitragVerfasst am: 08.02.2003, 18:50    Titel: Antworten mit Zitat

meinst du nur ein zeiger auf das DDraw Interface?

das geht so:
Code:

//Das ist der Zeiger auf das DirectDraw-Interface
LPDIRECTDRAW lpSTDDD;

musst nur noch anlegen anfordern und freigeben.
_________________
www.z-software.de
Spieleentwicklung-Pur
Besuchen Sie uns.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 08.02.2003, 20:45    Titel: Antworten mit Zitat

Ob man die Surfaces direkt nach der Initialisierung erzeugt oder im Laufe des Spiels ist dcoh egal. Warum solltest du denn keinen Zeiger aufs DDInterface mehr haben?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
blackhunter
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 35
Wohnort: Herzberg am Harz
Medaillen: Keine

BeitragVerfasst am: 09.02.2003, 14:56    Titel: Antworten mit Zitat

Ich hab zwar noch nen Zeiger auf das DDrawInterface der ist jedoch in der DDrawKlasse (zum initialisieren)!

@MiracleBoy:
Wenn ich alle meine Surfaces bei der Initialisierung erzeuge,
dann ist der Grafikspeicher gleich voll.
Und beim initialisieren ist auch noch nicht sicher ob alle und wenn
welche benötigt werden. Desshalb will ich sie erst anlegen wenn ich sie brauche.

@Ciceri
kannst du mir das mit dem anlegen, anfordern und freigeben nochmal genauer erklären?????

Danke
_________________
visit: www.theblacknet.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Ciceri
Super JLI'ler


Alter: 36
Anmeldedatum: 26.08.2002
Beiträge: 418
Wohnort: Wischhafen/in der nähe Hamburgs
Medaillen: Keine

BeitragVerfasst am: 09.02.2003, 19:57    Titel: Antworten mit Zitat

hehe ICH DIR etwas erklären? Rolling Eyes also ich wenn du das nciht verstehst, dann wunder dich nicht, cih bin knallharter unerfahrener undaufmerksamer c++ progger

also soll ich dir den vorgang erklären oder was genau? so geht das nur für windows 95:

Als erste brauchst du halt einen Zeiger auf das DirectDraw-Interface:
Code:

//Zeiger auf das DD-Interface
LPDIRECTDRAW lpSTDDD;


nun hat man halt den zeiger auf das interface und um es zu bentuzen muss es noch angelegt und angefordert werden:
Code:

//DD-Interface anlegen
DIRECTDRAWCREATE(NULL,&lpSTDDD,NULL);
...
//Das Standard Interface anfordern, um weiter arbeiten zu können
lpSTDDD-QueryInterface(IID_IDirectDraw7,(LPVOID*)lpDD7);


das wars eigentlcih und dann musst du halt es später wieder freigeben:
Code:

lpSTDDD->Release();
...



Bei Windows 98 oder höher ist das viel eifnacher, da weiß ich das ncith genau, habe das nur auf nen 95 gemacht, nun habe ich XP und habe dmait lange nix mehr gemacht. ist glaube ich sogar oben falsch, also frag leiber hazel oder afe oder verücktes hunh oderso. also nicht, dass du mir dann die schuld gibst, das ich dir etwas falsch erklärt ahbe Very Happy
_________________
www.z-software.de
Spieleentwicklung-Pur
Besuchen Sie uns.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Starwash
Senior JLI'ler


Alter: 39
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 09.02.2003, 20:12    Titel: Antworten mit Zitat

Hi,
dann lass dir doch einfach als Funktionsparameter den Zeiger übergeben. Dann kannst du ihn in deiner Funktion dereferenzieren, wie du willst und hast auch, was du haben wolltest.

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
blackhunter
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 35
Wohnort: Herzberg am Harz
Medaillen: Keine

BeitragVerfasst am: 10.02.2003, 13:35    Titel: Antworten mit Zitat

Kann ich einach mal so noch n neues DDrawInterface erzeugen???
Also für jede Surface???
_________________
visit: www.theblacknet.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sören
JLI Master Trainee



Anmeldedatum: 26.07.2002
Beiträge: 647
Wohnort: Bonn
Medaillen: Keine

BeitragVerfasst am: 10.02.2003, 15:34    Titel: Antworten mit Zitat

blackhunter hat Folgendes geschrieben:
@MiracleBoy:
Wenn ich alle meine Surfaces bei der Initialisierung erzeuge,
dann ist der Grafikspeicher gleich voll.
Und beim initialisieren ist auch noch nicht sicher ob alle und wenn
welche benötigt werden. Desshalb will ich sie erst anlegen wenn ich sie brauche.

Da hab ich mich mal wieder undeutlich ausgedrückt! Ich wollte damit sagen, dass der Code sich nicht unterscheidet! Wenn du noch mit den Klassen aus den Buch arbeitest, solltest du (soweit ich die Klassen noch im Kopf habe) zu jedem Zeitpunkt im Programm SurfaceManger.AddSurface() ausführen können. Diese Funktion erzeugt ja die Surfaces! Und wenn du die Funktion erst später ausführst, werden die Surfaces auch erst später geladen. Das ist doch was du wolltest, oder?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 11.02.2003, 17:16    Titel: Antworten mit Zitat

Ich sag mal folgendes:
Wenn du dein Interface erzeugt hast, kannst du mit ihm zu jederzeit Surfaces erzeugen, bis du das interface wieder frei gegeben hast. ich würd dir empfehlen, dass du einfach am Anfang des Programms dein interface erzeugst und am Ende erst wieder freigibst. Dann kannst du jederzeit wenn du lust hast Surfaces erzeugen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
blackhunter
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 35
Wohnort: Herzberg am Harz
Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 18:15    Titel: Antworten mit Zitat

@ Verrüktes Huhn

Das habe ich auch nur das Interface liegt in einer Klasse an die ich nur schwer dran komme, geht das nun auch anders? Ohne das ich das Interface in der Klasse benötige???

Danke
_________________
visit: www.theblacknet.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
VerruecktesHuhn
Super JLI'ler



Anmeldedatum: 30.07.2002
Beiträge: 492
Wohnort: Stuttgart
Medaillen: Keine

BeitragVerfasst am: 12.02.2003, 19:16    Titel: Antworten mit Zitat

Dann deklarier das Interface mal global. Oder erklär den aufbau der beteiligten Klassen mal genauer!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
blackhunter
Mini JLI'ler



Anmeldedatum: 19.07.2002
Beiträge: 35
Wohnort: Herzberg am Harz
Medaillen: Keine

BeitragVerfasst am: 15.02.2003, 18:40    Titel: Antworten mit Zitat

Ich habe die DirectDraw Klasse aus dem Buch.
Für jede Oberfläche will ich eine Klasse erzeugen, inder beim aufrufen des Konstruktors eine Bitmap aus einer Datei in die Oberfläche geladen wird.
Diese Oberflächen-Klasse will ich dann überall in meinem Programm zur Verfügung haben, auch in weiteren Klassen!!!
_________________
visit: www.theblacknet.de
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Starwash
Senior JLI'ler


Alter: 39
Anmeldedatum: 22.09.2002
Beiträge: 252
Wohnort: Zossen (bei Berlin)
Medaillen: Keine

BeitragVerfasst am: 15.02.2003, 21:30    Titel: Antworten mit Zitat

Hi,
also nur der Form halber, damit wir uns hier auch an ein wenig Fachsprache gewöhnen, du willst für jedes Surface eine Instanz der Oberflächen-Klasse erzeugen. Ich weiß ja nicht, wie du das tust, aber ich würde dies an deiner Stelle mit einer Zeigerverkettenliste erledigen. Und ich kann dir nur nochmal empfehlen, die einfach einen Zeiger auf dein Interface übergeben zu lassen, dann kannst du den erhaltenen Zeiger jeder Zeit dereferenzieren und du kannst somit zu jeder beliebigen Laufzeit ein neues Surface anlegen.

Gruss Tarek
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum