Forum: PC-Programmierung C++ Zeichnen mit buffer


von Joshua H. (joshih13)


Lesenswert?

Guten Tag,
mal ne blöde Frage: Ich habe gerade ein Programm erstellt, welches eine 
virtuelle "Karte", so nenne ich es mal, in 3D darstellt. Das heißt, ich 
gebe dem Programm die Eckpunkte eines Objekts (X,Y und Z Koordinaten) 
und Verschiebungs- und Rotationsdaten und es berechnet virtuelle 3D 
Drahtgittermodelle. Funktioniert alles sehr gut, Rotation, Verschiebung 
und Darstellung klappt wunderbar und sieht toll aus. Das Programm dient 
einzig und allein dem Zweck, die Funktion von Grafikengines ganz einfach 
zu demonstrieren, wobei es sich bei dieser natürlich um eine sehr 
primitive Engine handelt, doch Sie erfüllt ihren Zweck. Naja das einzige 
Problem ist, das es flimmert, was daran liegt, dass ich direkt auf den 
Bildschirm zeichne. Gelesen habe ich, dass zuerst in einen Buffer 
gezeichnet wird und solange die Berechnung dauert, wird noch der alte 
Buffer angezeigt um dem Flimmern vorzubeugen. Tja in der Theorie toll, 
nur weiß ich leider gerade nicht, wie das geht :) Also ich zeichne mit 
MoveToEx und LineTo ein HDC objekt. Wie zeichne ich dieses also in einen 
buffer?

PS: Sorry für die blöde Frage, hab gerade irgendwie ein Brett vorm 
Kopf^^ Würd mich freuen, wenn mir jemand eben den entsprechneden Befehl 
schreibt oder eine entsprechende Inetseite verlinkt.

von Peter II (Gast)


Lesenswert?

verwende doch einen 2. HDC und schalte nach den Zeichen zwischen beiden 
um.

von Daniel A. (daniel-a)


Lesenswert?

Wenn man nach HDC Doublebuffered sucht, da kommen viele brauchbare 
ergebnisse...

Aber da es hier um 3d geht, will ich darauf hinweisen das gute engines 
mit der grafikkarte arbeiten, dafür gibt es 2 libraries: opengl/gles und 
directX
Dann muss man auch nichtmehr selbst die linie zeichnen, das kann auch 
die grafikkarte.

Ich empfehle opengl, dass ist einfach, platformunabhängig, und hat 
bereits doublebuffering support.

: Bearbeitet durch User
von Joshua H. (joshih13)


Lesenswert?

Daniel A. schrieb:
> Wenn man nach HDC Doublebuffered sucht, da kommen viele brauchbare
> ergebnisse...
>
> Aber da es hier um 3d geht, will ich darauf hinweisen das gute engines
> mit der grafikkarte arbeiten, dafür gibt es 2 libraries: opengl/gles und
> directX
> Dann muss man auch nichtmehr selbst die linie zeichnen, das kann auch
> die grafikkarte.
>
> Ich empfehle opengl, dass ist einfach, platformunabhängig, und hat
> bereits doublebuffering support.

Hi, danke für die Antwort. Ich werd gucken, was ich finde^^ Ja ich weiß, 
dass es dafür entsprechende Bibliotheken usw. gibt, auch von OpenGL habe 
ich gehört. Es geht mir aber erstmal darum, wie diese 3D Darstellung 
berechnet wird und wie so eine Engine arbeitet. Ein Spiel wollte ich 
nicht damit programmieren, zumal der Prozessor der das packt 
wahrscheinlich auch noch erfunden werden muss^^ Aber es ist schon 
interessant zu sehen, was simple Mathematik in zusammenarbeit mit einem 
PC kann^^ Ich muss sagen, ich war sehr erstaunt, das es funktioniert und 
auch so ziemlich auf Anhieb. Naja mal sehen, ob ich überhaupt wirklich 
mit OpenGL und 3D Spieleentwickelung im Allgemeinen arbeite, es ist ja 
trotzdem immernoch sehr Zeit- und Schreibaufwendeig. Über sehr kleine 
Spiele werde ich wohl nicht hinaus kommen.

von Joshua H. (joshih13)


Lesenswert?

Nochmal Danke an alle, jetzt funktioniert alles super.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.