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
|
Verfasst am: 08.02.2003, 16:28 Titel: Surface erzeuegn |
|
|
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 |
|
 |
Ciceri Super JLI'ler

Alter: 37 Anmeldedatum: 26.08.2002 Beiträge: 418 Wohnort: Wischhafen/in der nähe Hamburgs Medaillen: Keine
|
Verfasst am: 08.02.2003, 17:50 Titel: |
|
|
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 |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 08.02.2003, 19:45 Titel: |
|
|
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 |
|
 |
blackhunter Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 35 Wohnort: Herzberg am Harz Medaillen: Keine
|
Verfasst am: 09.02.2003, 13:56 Titel: |
|
|
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 |
|
 |
Ciceri Super JLI'ler

Alter: 37 Anmeldedatum: 26.08.2002 Beiträge: 418 Wohnort: Wischhafen/in der nähe Hamburgs Medaillen: Keine
|
Verfasst am: 09.02.2003, 18:57 Titel: |
|
|
hehe ICH DIR etwas erklären? 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  _________________ www.z-software.de
Spieleentwicklung-Pur
Besuchen Sie uns. |
|
Nach oben |
|
 |
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 09.02.2003, 19:12 Titel: |
|
|
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 |
|
 |
blackhunter Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 35 Wohnort: Herzberg am Harz Medaillen: Keine
|
Verfasst am: 10.02.2003, 12:35 Titel: |
|
|
Kann ich einach mal so noch n neues DDrawInterface erzeugen???
Also für jede Surface??? _________________ visit: www.theblacknet.de |
|
Nach oben |
|
 |
Sören JLI Master Trainee

Anmeldedatum: 26.07.2002 Beiträge: 647 Wohnort: Bonn Medaillen: Keine
|
Verfasst am: 10.02.2003, 14:34 Titel: |
|
|
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 |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 11.02.2003, 16:16 Titel: |
|
|
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 |
|
 |
blackhunter Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 35 Wohnort: Herzberg am Harz Medaillen: Keine
|
Verfasst am: 12.02.2003, 17:15 Titel: |
|
|
@ 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 |
|
 |
VerruecktesHuhn Super JLI'ler

Anmeldedatum: 30.07.2002 Beiträge: 492 Wohnort: Stuttgart Medaillen: Keine
|
Verfasst am: 12.02.2003, 18:16 Titel: |
|
|
Dann deklarier das Interface mal global. Oder erklär den aufbau der beteiligten Klassen mal genauer! |
|
Nach oben |
|
 |
blackhunter Mini JLI'ler
Anmeldedatum: 19.07.2002 Beiträge: 35 Wohnort: Herzberg am Harz Medaillen: Keine
|
Verfasst am: 15.02.2003, 17:40 Titel: |
|
|
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 |
|
 |
Starwash Senior JLI'ler
Alter: 40 Anmeldedatum: 22.09.2002 Beiträge: 252 Wohnort: Zossen (bei Berlin) Medaillen: Keine
|
Verfasst am: 15.02.2003, 20:30 Titel: |
|
|
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 |
|
 |
|