GDI vs DirectX vs OpenGL Grafika a zvuk - C # a

U nás od: 13.03.2007
Príspevky: 41
Vývojové prostredie: Visual Studio 2008
Pôvod: Düsseldorf

grafika

GDI + vs DirectX vs OpenGL

Dobré ráno,
Pracujem v oceliarskej spoločnosti, ktorá vytvára technologické modely. V súčasnej dobe pracujeme trochu zastaralo so starou verziou Fortran, ktorá je integrovaná do Visual Studio 6. GUI a grafický výstup sú veľmi dobré

Teraz sa mi konečne podarilo presvedčiť šéfa, aby získal nové vývojové prostredie, v ktorom môžeme implementovať grafické používateľské rozhranie a výstup výpočtov, ale samotný výpočet sa stále vykonáva vo Fortrane.

Rozhodli sme sa pre VS2005 s C #. Štruktúra programu by bola nasledovná: Zadanie všetkých možných údajov prostredníctvom formulára. Po stlačení tlačidla Štart sa dáta odošlú do externej Fortran DLL, ktorá potom začne počítať. Po výpočte sa výsledky vrátia do jazyka C #, C # nakreslí aktuálne výsledky.

Teraz ide o to, priniesť grafický výstup výsledkov na obrazovku, vidím 3 možnosti: GDI +, DirectX a OpenGL.

Samozrejme, je dôležité ČO chcem robiť:
- normálne diagramy v súradnicovom systéme X/Y, kde sa v priebehu času zobrazuje napríklad teplotná krivka.
- Teplotné krivky ako izotermy; Napríklad obdĺžnik, v ktorom sú horúce miesta červené a na studenom mieste jemne odstupňované do modra.
- Voľne nakreslené obrázky, buď vložené ako BMP/akýkoľvek formát obrázka, alebo nakreslené za behu.
- Mal by som byť schopný vytlačiť diagramy a uložiť ich ako obrázok.
- Nové možnosti ukazujú aj veci v 3D, miestnosti s našimi systémami napr.

Posledné dni som sa trochu venoval GDI +, čo by na bežné X/Y diagramy stačilo. Pokiaľ tomu dobre rozumiem, kresba sa musí robiť metódou OnPaint (). Bolo by lepšie, keby som dal impulz na prekreslenie, aby nebol zbytočne zaťažený CPU. Hneď dostanem návod Kreslenie v programoch Windows (Paint/OnPaint, PictureBox) viesť k mysli. Myslím, že to odpovie na veľa otázok (hlúpe, že je ťažké ich vytlačiť).

S SDK DirectX z februára 2007 naozaj nevychádzam. Na jednej strane je pomoc stále aktuálna od augusta 2005, takže metódy Direct3D atď. Boli premenované alebo chýbajú/nahrádzajú. Nepodarilo sa mi nakresliť jednoduché čiary, ale nedokázal som sa zaseknúť.
Na druhej strane mi prekáža, že DirectDraw už vraj nie je podporovaný a je lepšie sa s ním už nevyvíjať. Pretože tu zostaneme na XP, DirectX9 pravdepodobne zostane poslednou verziou pre XP. Takže je mi to jedno, že?

OpenGL som sa zatiaľ nedotkol.

Bolo by pekné, keby jeden alebo druhý mohol zverejniť svoje skúsenosti s 3 systémami, teším sa na každý impulz a podnet na zamyslenie

U nás od: 04.06.2005
Príspevok: 1 439
Vývojové prostredie: Notepad ++ + csc + nmake
Pôvod: Linec, Rakúsko

U nás od: 13.03.2007
Príspevky: 41
Vývojové prostredie: Visual Studio 2008
Pôvod: Düsseldorf

Štartér témy

U nás od: 04.06.2005
Príspevok: 1 439
Vývojové prostredie: Notepad ++ + csc + nmake
Pôvod: Linec, Rakúsko

U nás od: 17.03.2005
Príspevok: 5 914
Vývojové prostredie: VS 2017/VS Code
Pôvod: Stredné Švajčiarsko

Pre diagramy a nie vynikajúce animované 2D príbehy by som použil aj GDI +. Je to ľahké a ako som už povedal, nemusí to nevyhnutne vyžadovať dlhé tréningové obdobie.

Pokiaľ ide o zložitejšie animácie a/alebo 3D vizualizácie, OpenGL alebo DirectX neexistuje.
Tu ste na výber, pre OpenGL nájdete celkovo viac návodov, väčšinou však nie v súvislosti s C #.
Na internete existuje pomerne veľa návodov pre DirectX, najmä v súvislosti s C #. Ale väčšinou v angličtine.

Najprv by som vypracoval jednoduché znázornenia pomocou GDI + a neskôr niečo rozšíril pomocou OpenGL alebo DirectX.

U nás od: 07/07/2005
Príspevky: 2 890
Vývojové prostredie: SharpDevelop/VS.NET
Pôvod: Nemecko

Citát:
len hlúposť, že je ťažké tlačiť

Niekde sa diskutovalo o výtlačku PDF, ohľadne fóra, vyhľadajte ho

Citát:
„Problém“, ktorý stále mám s GDI, je ten, že pôvod pre kreslenie je vľavo hore. So schémami je vľavo dole. Môžete to nejako zmeniť alebo to musím zakaždým previesť?

Ak sa vám páči, hľadajte maticu a preklad

C # kód:
Maticová matica = nová matica ();
matica. Preložiť (x, y);

urobte to a použite to na grafický objekt:

vec je zjedená,
inak by ste sa museli vždy obrátiť.
Čo by v tomto prípade nebol veľký problém, jednoducho obrátiť Y.
DeinY = pôvod - Y.

Citát:
Vidím 3 možnosti: GDI +, DirectX a OpenGL.

Použil by som aj GDI.

S DirectX a OpenGL máte viac práce, pretože sa musíte podrobnejšie oboznámiť s témou. Na GDI môžete ihneď začať kresliť.
S OpenGL a DirectX musíte najskôr vytvoriť zobrazovacie okno. Samozrejme, trojrozmernú grafiku môžete zobraziť aj neskôr.

DirectX IMHO so sebou prináša najviac úsilia.

Vezmite teda GDI a - ak je to potrebné - prepnite na OpenGL.

Pre mňa však táto potreba nikdy nevznikla, pretože GDI je dostatočne rýchle.

Tento príspevok bol upravený 1 krát, naposledy používateľom dr4g0n76 15. 3. 2007 12:28 .

U nás od: 3. 8. 2006
Príspevky: 95
Vývojové prostredie: VS 2010 Pro
Pôvod: Tirolsko

U nás od: 1. októbra 2006
Príspevky: 11 397
Vývojové prostredie: Visual Studio 08/05/10 Prof.

Som tiež pre gdi pre jednoduché reprezentácie (2D) a ak chcete prepnúť na 3D, môžete tiež použiť rámec XNA. Vďaka tomu je oveľa jednoduchšie vyvíjať 3D, pretože ste oslobodení od mnohých vecí, ktoré ešte musíte robiť ručne pomocou štandardného spravovaného DirectX.

v opačnom prípade, ak chcete zobraziť iba jednoduché geometrické modely v simulovanom 3D, môžete to urobiť pomocou gdi, ale nemáte tam žiadne textúry.

U nás od: 13.03.2007
Príspevky: 41
Vývojové prostredie: Visual Studio 2008
Pôvod: Düsseldorf

Štartér témy

V prvom rade ďakujem za odpovede!

Pri transformácii matice som si prečítal, čo funguje: zrkadliť ju na osi X a posúvať nadol o výšku obrazovky. BMP sa však potom tiež zrkadlia, čo nie je celkom pointa. Teraz som prepísal „náhradné“ metódy pre metódy Graphics.Draw ****, ktoré potrebujem, kde opravím hodnotu Y.

Zedgraph vyzerá celkom pekne. Niekto sa skutočne usiloval. Musím zistiť, či to vyhovuje mojim účelom, inak ho môžete stále použiť na iné účely zobrazenia.

Cez víkend sa doma pozriem na OpenGL. Už bolo nájdených niekoľko stránok s obalmi pre C #.

Zatiaľ sa nedotknem XNA. Po prvé, pretože toto je momentálne k dispozícii iba pre C # Express, po druhé, nechcem, aby som musel inštalovať ďalších tisíc programov na cieľové systémy.