GDI vs DirectX vs OpenGL grafika és hang - A C # és
Velünk, mivel: 2007.03.13
Bejegyzések: 41
Fejlesztői környezet: Visual Studio 2008
Származás: Düsseldorf

GDI + vs DirectX vs OpenGL
Jó reggelt kívánok,
Egy acélfeldolgozó cégben dolgozom, amely technológiai modelleket készít. Jelenleg egy kicsit elavultan dolgozunk egy régi Fortran verzióval, amely integrálva van a Visual Studio 6-ba. A grafikus felület és a grafikus kimenet nagyon jó
Most végre sikerült rábeszélnem a főnökömet, hogy szerezzen egy új fejlesztési környezetet, amellyel megvalósíthatjuk a grafikus felhasználói felületet és a számítások eredményét, de maga a számítás még mindig a Fortranban történik.
A VS2005 mellett döntöttünk C # -val. A program felépítése a következő lenne: Minden lehetséges adat bevitele űrlapon keresztül. A start gomb megnyomása után az adatokat elküldik a külső Fortran DLL-be, amely ezután elkezd számolni. Számítás után az eredmények visszakerülnek a C # közé, a C # megrajzolja az aktuális eredményeket.
Most az eredmények grafikus kimenetének megjelenítéséről van szó, 3 lehetőséget látok: GDI +, DirectX és OpenGL.
Természetesen az a fontos, hogy mit akarok csinálni:
- normál diagramok X/Y koordinátarendszerben, ahol például egy hőmérsékleti görbe jelenik meg az idő múlásával.
- A hőmérsékleti görbék izotermákként; Például egy téglalap, ahol a forró pontok pirosak és finom kékre vannak osztva, ahol hideg van.
- Szabadon rajzolt képek, akár BMP-ként/bármilyen képformátumban beszúrva, akár futás közben rajzolva.
- Képesnek kell lennem kinyomtatni az ábrákat, és képként menteni őket.
- Az új lehetőségek 3D-ben is megmutatják a dolgokat, szobáink a rendszereinkkel pl.
Az elmúlt napokban kicsit foglalkoztam a GDI + -val, ami elegendő lenne a normál X/Y diagramokhoz. Értésem szerint a rajzolást OnPaint () módszerrel kell elvégezni. Jobb lenne, ha megadnám az impulzust az újrarajzolásra, hogy a CPU ne kerüljön feleslegesen megterhelésre. Azonnal beszerzem az oktatóanyagot Rajzolás Windows programokban (Paint/OnPaint, PictureBox) vezet az elméhez. Azt hiszem, ez sok kérdésre ad választ (csak hülyeség, hogy nehéz kinyomtatni).
Nem igazán jövök össze a 2007. februári DirectX SDK-val. Egyrészt a súgó továbbra is naprakész 2005 augusztusától, így a Direct3D módszereket stb. Átnevezték, vagy hiányoznak/kicserélik. Nem sikerült egyszerű vonalakat húzni, de azt sem tudtam még rendesen elakadni.
Másrészt zavar, hogy állítólag a DirectDraw már nem támogatott, és jobb, ha már nem fejlesztünk vele. Mivel itt maradunk az XP-n, valószínűleg a DirectX9 marad az utolsó XP verzió. Szóval nem érdekel, igaz?
Még nem nyúltam az OpenGL-hez.
Jó lenne, ha az egyik vagy a másik közzétehetné tapasztalataikat a 3 rendszerrel kapcsolatban, várom minden impulzust és gondolatmenetet
Velünk, mivel: 2005.06.04
Hozzájárulás: 1 439
Fejlesztési környezet: Notepad ++ + csc + nmake
Származás: Linz, Ausztria
Velünk, mivel: 2007.03.13
Bejegyzések: 41
Fejlesztői környezet: Visual Studio 2008
Származás: Düsseldorf
Témaindító
Velünk, mivel: 2005.06.04
Hozzájárulás: 1 439
Fejlesztési környezet: Notepad ++ + csc + nmake
Származás: Linz, Ausztria
Velünk, mivel: 2005.03.17
Hozzájárulás: 5 914
Fejlesztési környezet: VS 2017/VS Code
Származás: Közép-Svájc
Diagramokhoz és nem nagyszerű animált 2D történetekhez a GDI + -ot is használnám. Könnyen elvégezhető, és mint mondtam, nem feltétlenül igényel hosszú edzésidőt.
Amikor összetettebb animációkról és/vagy 3D-s megjelenítésekről van szó, az OpenGL vagy a DirectX nincs megkerülve.
Itt elkényeztetett a választás, az OpenGL számára több oktatóanyagot találsz, de főleg nem a C # -val kapcsolatban.
Az Interneten viszonylag sok oktatóanyag található a DirectX számára, különösen a C # kapcsán. De leginkább angolul.
Először kidolgoznám az egyszerű reprezentációkat a GDI + -al, majd később bővítenék valamit az OpenGL vagy a DirectX segítségével.
Velünk, mivel: 2005.07.07
Hozzájárulások: 2 890
Fejlesztői környezet: SharpDevelop/VS.NET
Származás: Németország
| Idézet: |
| csak hülyeség, hogy nehéz kinyomtatni |
Valahol volt egy vita a PDF nyomtatásról, a fórummal kapcsolatban, keresse meg
| Idézet: |
| A GDI-vel továbbra is fennálló "problémám" az, hogy a rajzolás eredete a bal felső sarokban található. Diagramokkal a bal alsó sarokban található. Meg tudja ezt változtatni valahogy, vagy minden alkalommal át kell alakítanom? |
Ha tetszik, keresse meg a mátrixot és a fordítást
| C # kód: |
| Mátrixmátrix = új mátrix (); mátrix.Translate (x, y); |
tegye meg, és alkalmazza ezt a grafikus objektumra:
megeszik a dolgot,
különben mindig meg kellene térítenie magát.
Ami ebben az esetben nem lenne nagy baj, csak fordítsa meg Y-t.
DeinY = eredet - Y.
| Idézet: |
| Három lehetőséget látok: GDI +, DirectX és OpenGL. |
A GDI-t is használnám.
A DirectX és az OpenGL használatával több erőfeszítést igényel, mert tovább kell ismerkednie a témával. A GDI-nél azonnal elkezdhet rajzolni.
Az OpenGL és a DirectX használatával először létre kell hoznia egy kijelzőablakot. Természetesen később háromdimenziós grafikákat is megjeleníthet.
IMHO, a DirectX igényli a legtöbb erőfeszítést.
Tehát vegye be a GDI-t, és - ha szükséges - váltson az OpenGL-re.
Számomra azonban ez az igény soha nem merült fel, mert a GDI elég gyors.
Ezt a bejegyzést 1 alkalommal szerkesztette, utoljára dr4g0n76, 2007.03.15. 12:28 .
Velünk, mivel: 2006.08.03
Bejegyzések: 95
Fejlesztési környezet: VS 2010 Pro
Származás: Tirol
Velünk, mivel: 2006. október 1
Hozzájárulások: 11 397
Fejlesztői környezet: Visual Studio 2010.05.08. Prof.
én is a gdi-t támogatom az egyszerű ábrázolásokhoz (2D), és ha át akar térni 3D-re, akkor használhatja az XNA keretrendszert is. Ezzel sokkal könnyebb kifejleszteni a 3D-t, mert sok mindentől megkönnyebbül, amit továbbra is kézzel kell elvégeznie a standard kezelt DirectX segítségével.
egyébként, ha csak egyszerű geometriai modelleket szeretne szimulált 3D-ben megjeleníteni, akkor ezt megteheti a gdi-vel is, de ott nincsenek textúrái.
Velünk, mivel: 2007.03.13
Bejegyzések: 41
Fejlesztői környezet: Visual Studio 2008
Származás: Düsseldorf
Témaindító
Először is köszönöm a válaszokat!
A mátrixtranszformációval végigolvastam, mi működik: tükrözze az X tengelyre, és csúsztassa lefelé a képernyő magasságával. Azonban a BMP-k is tükröződnek, ami nem egészen a lényeg. Most felülírtam a Graphics.Draw **** metódusokat, amelyekre szükségem van, ahol kijavítom az Y értéket.
A zedgraph nagyon szépnek tűnik. Valaki valóban erőfeszítéseket tett. Meg kell néznem, hogy megfelel-e a céljaimnak, különben továbbra is felhasználhatja más megjelenítési célokra.
Hétvégén megnézem otthon az OpenGL-t. Már talált pár oldalt a C # csomagolásával.
Egyelőre nem nyúlok az XNA-hoz. Először is, mivel ez jelenleg csak a C # Express számára érhető el, másrészt nem akarok, hogy ezer más programot kelljen telepítenem a célrendszerekre.