Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

1

08.11.2007, 13:53

bitmap

ich bins mal wieder..

ich hätte da ein paar fragen bezüglich funktionen die ich brauche um mit bitmaps arbeiten zu können.

und ja, ich hab nat. schon in der msdn nachgelesen..

CreateCompatibleDC
The CreateCompatibleDC function creates a memory device context (DC) compatible with the specified device.

so stehts in der msdn.. aber so ganz genau versteh ich das nicht warum man diese funktion braucht um beispielsweise einen buffer zu erstellen.
ich hab da ein beispiel indem zuerst GetDC aufgerufen wird und mit dem erhaltenenen device wird dann CreateCompatibleDC aufgerufen der mir dann den buffer gibt. kann ich eigentlich den device den ich aus GetDC bekomme auch als buffer verwenden? worin unterscheidet sich der bufferDC vom ersten DC aus GetDC() ?

SelectObject
This function selects an object into a specified device context. The new object replaces the previous object of the same type.

"the new object" ist vom typ HGDIOBJ und alleine schon die definition von dem verwirrt mich..

C-/C++-Quelltext

1
2
3
4
5
// windef.h


typedef void NEAR* HGDIOBJ;
    // ...

#define NEAR                near
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

2

08.11.2007, 14:08

HGDIOBJ ist ein einfaches Handle ... void-Zeiger :P
CreateCompatibleDC wird dazu genutz um Double Buffering zu erreichen :P Such da einfach mal nach ...
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

08.11.2007, 15:25

der device kontext ist nicht der buffer.

http://msdn2.microsoft.com/en-us/library/ms533209.aspx

lies dir das mal durch ;)

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

4

08.11.2007, 16:25

oho.. das mit dem double buffering hab ich verstanden...

C-/C++-Quelltext

1
2
3
4
5
6
HDC dc1;
HDC dc2;

HBITMAP bm = CreateCompatibleBitmap(dc1, cxClient, cyClient);
SelectObject(dc2, hBM);
BitBlt(dc1, 0, 0, cxClient, cyClient, dc2, 0, 0, SRCCOPY);


@ dot:
aber hier in dem fall ist dc2 ja sowas wie ein buffer? also der backbuffer oder?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

08.11.2007, 16:27

naja, die bitmap is der buffer. der dc an sich net.

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

6

08.11.2007, 16:28

achso ok.. :)

danke für die antworten :D
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

7

08.11.2007, 16:42

hätte da noch ne frage die nichts mit dem thema zu tun hat, aber für die ich jetzt nicht extra einen thread aufmachen will...

wie kann ich zb mein programm so schreiben dass ich nur eine gewisse anzahl an frames pro sekunde berechne? hab da mal sowas gesehn mit zeit stoppen usw. in der kombination mit der Sleep() funktion..

aber ist das ne schöne variante?
kann mir da jemand evtl. einen tipp geben?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

8

08.11.2007, 17:21

Öhm, eigentlich lässt man das mit maximalen FPS laufen stoppt die Zeit pro Frame und passt dementsprechend alles Bewegungen an. Jedenfalls wenns ein Spiel ist.
Wenn man wirklich das Programm ausbremsen will, sollte man das nicht mit einer Schleife machen, sondern die Rechenzeit dem Betriebssystem geben. sleep() geht imo schon in die richtige Richtung.
Lieber dumm fragen, als dumm bleiben!

$nooc

Alter Hase

  • »$nooc« ist der Autor dieses Themas

Beiträge: 873

Wohnort: Österreich / Kärnten

Beruf: Schüler

  • Private Nachricht senden

9

08.11.2007, 18:30

naja es soll ein 2D spiel werden halt..

also mit Sleep() würds gehn?
einfach ausrechen wie lange 1 frame dauert und dann

Sleep(dauer); ?
Am Anfang der Weisheit steht die eigene Erkenntnis, dass man selbst nichts weiß! - Sokrates

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

10

08.11.2007, 20:55

Zitat von »"$nooc"«


wie kann ich zb mein programm so schreiben dass ich nur eine gewisse anzahl an frames pro sekunde berechne? hab da mal sowas gesehn mit zeit stoppen usw. in der kombination mit der Sleep() funktion..

aber ist das ne schöne variante?
kann mir da jemand evtl. einen tipp geben?


Ja, genauso gehts.
Inwiefern ist es nicht schön, sodass es etwas schöneres geben soll?
"Games are algorithmic entertainment."

Werbeanzeige