AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi DirectX / DelphiX / GDI
Thema durchsuchen
Ansicht
Themen-Optionen

DirectX / DelphiX / GDI

Ein Thema von Gruber_Hans_12345 · begonnen am 19. Okt 2004 · letzter Beitrag vom 24. Okt 2004
Antwort Antwort
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#1

DirectX / DelphiX / GDI

  Alt 19. Okt 2004, 09:49
Hallo,

Da ich in einigen meiner Projekte TPaintBox verwenden (auf Panels platziert und dort DoubleBufferd := TRUE) diese teilweise schon recht Grafikintensive sind, spiele ich mit dem Gedanken, ob sich ein Umstieg auf DirectX auszahlt bzw. überhaupt möglich ist.

*) Wird bei DriectX noch Doublebufferd benötigt bzw. muß man das dann selbst machen (mit zuerst auf Bitmap zeichnen und so ...)
*) Kann DirectX einfach in einem Panel ablaufen, oder muß immer ein ganzes Fenster / Screen dafür verwendet werden ?
*) Zahlt es sich aus ? es werden hauptsächlich Balken mit Images, ein Haufen Lies und Rect, etwas Farbverlaäufe, teiilweise recht große images ... gezeichnet
*) Vermute mal, daß unter DirectX Clipping funktioniert (zwar anders als bei Windows API) Oder ?
*) Gibt es sonst eine andere Alternative ? (OpenGL kommt sicher nicht in Frage !)

Würde mich freuen, wenn ich ein paar (ausser "Suchfunktion benutzen") Antworten bekomme.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#2

Re: DirectX / DelphiX / GDI

  Alt 20. Okt 2004, 10:18
also meines wissen kannst du DX in einem Panel ablaufen lassen.
Wenn du Große Bilder erstellst würde es sich anbieten DX zu nutzen, schau mal ob DelphiX was für dich ist, damit ist es einfach DX zu nutzen ist aber nur für 2D sachen geienigt(obwohl einige damit auch schon 3D engine geschrieben haben, sollen).
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#3

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 14:08
Hab mich jetzt schon in einige Sachen eingelesen, und auf folgende Fragen gestoßen.

*) Ich verwende nur 2D, ist es überhaupt Möglich mit OpenGL 2D zu zeichnen (ohne sich dabei etwas zu brechen) Man hat doch immer eine verzerrung drinnen oder ?
*) DelphiX ist ja schon sehr alt, lohnt sich der Umstieg auf DelphiX überhaupt noch ?
*) Ab DirectX 8 gibt es ja anscheinend kein DirectDraw mehr ? Ist damit die 2D Schiene auch in DriectX gestorben, oder sind da die Funtkionen in direct3D geflossen ?
*) Da es eventuell interessant wird, das zu zeichnende auch zu Drucken, kann DriectX soetwas ? (Bei OpenGL gibt es ja keine Möglichkeit dafür)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 14:12
Darf man Fragen, wieso OpenGL für dich nicht in Frage kommt?
Du hast keine Probleme mit dem teilweise schon alten DelphiX und du kannst es auch unter Linux laufen lassen...
Julian J. Pracht
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#5

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 15:11
Linux kommt nicht in Frage, da der nicht Grafische Teil und der Teil, der mit der Windows API arbeitet sehr sark überwiegt.

OpenGL aus folgendem Grund nicht
*) Drucken ist nicht Möglich (bei GDI kann ich ja einfach auf den Canvas des Drucker malen, bei directXweiß ich nicht, ob es da was
gibt, aber bei OpenGL definitiv (zumindest das was ich gelesen habe) nicht)

*) Da OpenGL ja rein 3D ist, befürchte ich, das wenn ich 2D zeichnen will das sehr umständlich ist, und ich immer verzerrungen bekomme, wenn ich die Kamera von vorne draufschauen lasse)


Ich bin mir ja von Grunde auf noch nicht sicher, ob sich der Umstieg generell lohnt. Bei meiner Anwendung handelt es sich um einen Kalender, der oben eine Zeitachse zeichnet, noch unten hin die verschiedenen Personen und dann die Termine zeichnet, diese können Text und Grafik usw. enthalten.
Mit GDI funkt das alles schon ganz gut, nur wenn man viele Termine hat, und zu scrollen anfängt, dann wirds nicht schön.
Wenn ich jetzt die Daten mal verdopple oder noch mehr reingeben, dann glaube ich, das es probleme beim zeichnen geben wird (einfach zu langsam)
Nur ob sich sowas überhaupt vernünftig mit DirectX/OpenGL zeichnen läßt

[edit]
Noch was ... ich verwende beim zeichnen hauptsächlich folgende Funtkionen
*) per windows API CreateRectRgn, SelectClipRgn
*) Moveto, LineTo, Rectangle, FillRect, PolyLine, Polygon
*) TextOut, TextExtent, CreateFontIndirect
*) ImageList.Draw
*) und noch ein paar andere, die ich vergessen habe ...
[/edit]
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#6

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 15:56
Zitat von Gruber_Hans_12345:
*) Drucken ist nicht Möglich (bei GDI kann ich ja einfach auf den Canvas des Drucker malen, bei directXweiß ich nicht, ob es da was gibt, aber bei OpenGL definitiv (zumindest das was ich gelesen habe) nicht)
Auch bei OpenGL kannst du einen Screenshot vom RedneringContext machen und den ausdrucken.

Zitat von Gruber_Hans_12345:
*) Da OpenGL ja rein 3D ist, befürchte ich, das wenn ich 2D zeichnen will das sehr umständlich ist, und ich immer verzerrungen bekomme, wenn ich die Kamera von vorne draufschauen lasse)
Auch OpenGL verfügt über hardwarebeschleunigte 2D-Zeichenfunktionen.

Zitat von Gruber_Hans_12345:
Mit GDI funkt das alles schon ganz gut, nur wenn man viele Termine hat, und zu scrollen anfängt, dann wirds nicht schön.
Die "üblichen Verdächtigen" (DoubleBuffering, Zugriffe über die API) sind schon abgeklappert?
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#7

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 16:05
Zitat von tommie-lie:
Auch bei OpenGL kannst du einen Screenshot vom RedneringContext machen und den ausdrucken.
Aber ob das so schön/gut aussieht, wenn ich das auf A1/A0 ausdrucken will ?
Bei GDI Canvas kann man das ja relativ einfach machen ... (ob das mit DirectX funktioniert weiß ich eh noch nicht)

Zitat von tommie-lie:
Auch OpenGL verfügt über hardwarebeschleunigte 2D-Zeichenfunktionen.
Ah, die habe ich noch nicht gesehen

Zitat von tommie-lie:
Die "üblichen Verdächtigen" (DoubleBuffering, Zugriffe über die API) sind schon abgeklappert
Double Buffering ist eingeschaltet. Es passt auch alles ganz gut, Probleme gibt es nur, wenn ich schnell scrolle, und eine große Zahl von Zeichenoperationen habe.
Was meinste mit Zugriff über API ?
Moveto, LineTo Rectangle und co direct mit dem HDC zeichnen ? Bringt das was ?
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#8

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 18:10
Zitat von Gruber_Hans_12345:
Aber ob das so schön/gut aussieht, wenn ich das auf A1/A0 ausdrucken will ?
Wenn du den Rendering Context groß genug wählst und somit auch genug Pixel für einen interpolationsfreien Ausdruck auf A0 hat. Aber das Ausdrucken kannst du ja immer noch über GDI machen.

Zitat von Gruber_Hans_12345:
Es passt auch alles ganz gut, Probleme gibt es nur, wenn ich schnell scrolle, und eine große Zahl von Zeichenoperationen habe.
Dann würde ich nicht unbedingt an die Grafik denken, sondern vielleicht eher an den Code, der das, was dargestellt werden soll, zusammensucht. Wenn das Problem nämlcih nur bei großen Datenmengen auftritt, ist es zweifelhaft, daß schnellere Grafik abhilfe schafft, denn auch die muss irgendwo die Daten hernehmen, die gezeichnet werden sollen.

Zitat von Gruber_Hans_12345:
Was meinste mit Zugriff über API? Moveto, LineTo Rectangle und co direct mit dem HDC zeichnen? Bringt das was?
In einigen Fällen, wo in kurzer Zeit massiv auf solche Funktionen zurückgegriffen wird, da spart man nämlich mit den API-Funktionen den Klassenoverhead, den die VCL-Lösung beansprucht, der Vorteil ist aber nur minimal, das ist richtig. Und wie gesagt, bei deinem Problem würde ich sowieso nicht auf die Grafik tippen.



P . S . : Weißt du , was plenken ist ? (und dann auch noch so inkonsequent nur bei Fragezeichen )
  Mit Zitat antworten Zitat
Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.439 Beiträge
 
Delphi 2007 Professional
 
#9

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 21:02
Zitat von tommie-lie:
Dann würde ich nicht unbedingt an die Grafik denken, sondern vielleicht eher an den Code, der das, was dargestellt werden soll, zusammensucht. Wenn das Problem nämlcih nur bei großen Datenmengen auftritt, ist es zweifelhaft, daß schnellere Grafik abhilfe schafft, denn auch die muss irgendwo die Daten hernehmen, die gezeichnet werden sollen.
Jep, da kann man sicher noch einiges optimieren, da ich aber einfach doch eine große Zahl von GDI Befehlen habe (FillRect, Textausgaben usw.) dachte ich mir, das man da auch noch viel Zeit gewinnen kann.

Ich glaube, dann werde ich einstweilen mal bei GDI bleiben, und die Daten etwas optimieren.

Zitat von tommie-lie:
In einigen Fällen, wo in kurzer Zeit massiv auf solche Funktionen zurückgegriffen wird, da spart man nämlich mit den API-Funktionen den Klassenoverhead, den die VCL-Lösung beansprucht, der Vorteil ist aber nur minimal, das ist richtig.
Ne, glaube auch nicht, das sich der Aufwand lohnt (ist meiner Meinung nach minimaler Lohn für doch viel Aufwand)

Zitat von tommie-lie:
P . S . : Weißt du , was plenken ist ? (und dann auch noch so inkonsequent nur bei Fragezeichen )
Tja, was man sich Jahrelang angewohnt hat, wird man nicht so schnell wieder los !
Aber ich glaube ich habe das nur bei Ruf und Fragezeichen oder ? (Der Rest sollte passen)
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat
tommie-lie
(Gast)

n/a Beiträge
 
#10

Re: DirectX / DelphiX / GDI

  Alt 24. Okt 2004, 21:09
Zitat von Gruber_Hans_12345:
da ich aber einfach doch eine große Zahl von GDI Befehlen habe (FillRect, Textausgaben usw.) dachte ich mir, das man da auch noch viel Zeit gewinnen kann.
Sofern ein Stocken des Scrollings mit steigender Datanmenge skaliert (je größer die Datenmenge bei gleicher Scrolgeschwindigkeit, desto langsamer ist der Bildaufbau), liegt es höchstwahrscheinlich nicht am Zeichnen, sondern an der Art und Weise, wie du die Daten zusammensammelst, die gezeichnet werden sollen, da solltest du also zuerst ansetzen.

Zitat von Gruber_Hans_12345:
Tja, was man sich Jahrelang angewohnt hat, wird man nicht so schnell wieder los !
Ironie oder Absicht?
Zitat von Gruber_Hans_12345:
Aber ich glaube ich habe das nur bei Ruf und Fragezeichen oder ? (Der Rest sollte passen)
Stimmt, das ist ja das Inkonsequente daran
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz