GDI срещу DirectX срещу OpenGL Графика и звук - C # и
С нас от: 13.03.2007
Мнения: 41
Среда за разработка: Visual Studio 2008
Произход: Дюселдорф

GDI + срещу DirectX срещу OpenGL
Добро утро,
Работя във фирма за обработка на стомана, която създава технологични модели. В момента работим малко остаряло със стара версия на Fortran, която е интегрирана в Visual Studio 6. GUI и графичен изход са много добри
Сега най-накрая успях да убедя шефа си да получи нова среда за разработка, с която можем да приложим GUI и изхода на изчисленията, но самото изчисление все още се прави във Fortran.
Решихме VS2005 с C #. Структурата на програмата ще бъде следната: Въвеждане на всички възможни данни чрез формуляр. След натискане на бутона за стартиране данните се изпращат към външната Fortran DLL, която след това започва да изчислява. След изчисление резултатите се връщат на C #, C # изтегля текущите резултати.
Сега става въпрос за показване на графичния изход на резултатите на екрана, виждам 3 възможности: GDI +, DirectX и OpenGL.
Разбира се, важно е какво искам да направя:
- нормални диаграми в координатна система X/Y, където напр. с времето се показва температурна крива.
- Криви на температурата като изотерми; напр. правоъгълник, където горещите точки са червени и фино градуирани до синьо, където е студено.
- Свободно изчертани изображения, вмъкнати като BMP/произволен формат на изображението или изготвени по време на изпълнение.
- Би трябвало да мога да разпечатам диаграмите и да ги запиша като изображение.
- Поради новите възможности за показване на нещата в 3D, стаи с нашите системи напр.
През последните няколко дни правих малко GDI +, което би било повече от достатъчно за нормални X/Y диаграми. Както разбирам, рисуването трябва да се направи по метода OnPaint (). По-добре бих дал импулса да се преначертае, за да не се натоварва излишно процесорът. Ще взема урока веднага Рисуване в програми на Windows (Paint/OnPaint, PictureBox) на ум. Предполагам, че това ще отговори на много въпроси (просто глупаво, че е трудно да се отпечата).
Наистина не се разбирам с DirectX SDK от февруари 2007 г. От една страна, помощта все още е актуална от август 2005 г., така че Direct3D методите и т.н. са преименувани или липсват/заменени. Не успях да начертая прости линии, но също така не успях да остана зад себе си.
От друга страна ме притеснява, че се казва, че DirectDraw вече не се поддържа и е по-добре да не се развива повече с него. Тъй като тук оставаме на XP, DirectX9 вероятно ще остане последната версия за XP. Така че не ме интересува, нали?
Още не съм пипал OpenGL.
Би било хубаво, ако единият или другият могат да публикуват своите преживявания с трите системи, очаквам всеки импулс и храна за размисъл
С нас от: 04.06.2005
Принос: 1439
Среда за разработка: Notepad ++ + csc + nmake
Произход: Линц, Австрия
С нас от: 13.03.2007
Мнения: 41
Среда за разработка: Visual Studio 2008
Произход: Дюселдорф
Тема стартер
С нас от: 04.06.2005
Принос: 1439
Среда за разработка: Notepad ++ + csc + nmake
Произход: Линц, Австрия
С нас от: 17.03.2005
Принос: 5914
Среда за разработка: VS 2017/VS Code
Произход: Централна Швейцария
За диаграми и не страхотни анимирани 2D истории бих използвал и GDI +. Лесно е да се направи и, както казах, не изисква непременно дълъг период на обучение.
Що се отнася до по-сложни анимации и/или 3D визуализации, няма начин да се заобиколят OpenGL или DirectX.
Тук сте разглезени за избор, за OpenGL ще намерите повече уроци като цяло, но най-вече не във връзка с C #.
В интернет има относително много уроци за DirectX, особено във връзка с C #. Но най-вече на английски.
Първо щях да разработя опростените представяния с GDI + и по-късно да разширя нещо с OpenGL или DirectX.
С нас от: 07/07/2005
Вноски: 2890
Среда за разработка: SharpDevelop/VS.NET
Произход: Германия
| Цитат: |
| просто глупаво, че е трудно да се печата |
Някъде имаше дискусия за PDF разпечатка, по отношение на форума, потърсете го
| Цитат: |
| „Проблем“, който все още имам при GDI, е, че началото на рисуването е горе вляво. С диаграмите е в долния ляв ъгъл. Можете ли да промените това по някакъв начин или трябва да го конвертирам всеки път? |
Потърсете матрица и превод, ако ви харесва
| C # код: |
| Матрична матрица = нова матрица (); matrix.Translate (x, y); |
направете това и приложете това към графичния обект:
нещото се яде,
в противен случай винаги ще трябва да се обърнете.
Което в този случай не би било голяма работа, просто обърнете Y.
DeinY = произход - Y.
| Цитат: |
| Виждам 3 възможности: GDI +, DirectX и OpenGL. |
Бих използвал и GDI.
С DirectX и OpenGL имате повече усилия, защото трябва да се запознаете по-нататък с темата. В GDI можете да започнете да рисувате веднага.
С OpenGL и DirectX първо трябва да създадете прозорец за показване. Разбира се, можете да покажете и триизмерни графики по-късно.
IMHO, DirectX включва най-много усилия.
Затова вземете GDI и - ако е необходимо - превключете на OpenGL.
Но за мен тази нужда никога не се е появявала, защото GDI е достатъчно бърз.
Тази публикация е редактирана 1 път, за последно от dr4g0n76 на 03.15.2007 12:28 .
С нас от: 08.08.2006
Мнения: 95
Среда за разработка: VS 2010 Pro
Произход: Тирол
С нас от: 1 октомври 2006 г.
Вноски: 11 397
Среда за разработка: Visual Studio 08/05/10 Проф.
Аз също съм за gdi за прости представяния (2D) и ако искате да преминете към 3D, тогава можете да използвате и XNA рамката. С това е много по-лесно да разработите 3D, защото сте освободени от много неща, които все още трябва да правите на ръка със стандартно управляван directX.
в противен случай, ако искате да покажете само прости геометрични модели в симулиран 3D, можете да го направите и с gdi, но там нямате текстури.
С нас от: 13.03.2007
Мнения: 41
Среда за разработка: Visual Studio 2008
Произход: Дюселдорф
Тема стартер
Първо благодаря за отговорите!
С преобразуването на матрицата бях прочел какво работи: огледайте го по оста X и го плъзнете надолу по височината на екрана. Тогава обаче BMP също се отразяват, което не е съвсем по същество. Сега съм заменил методите "заместване" за методите Graphics.Draw ****, които са ми необходими, където коригирам стойността Y.
Zedgraph изглежда доста хубаво. Някой наистина направи усилие. Трябва да видя дали отговаря на целите ми, в противен случай пак можете да го използвате за други цели на показване.
Ще разгледам OpenGL у дома през уикенда. Вече намерих няколко страници с обвивки за C #.
Засега няма да пипам XNA. Първо, тъй като в момента това е достъпно само за C # Express, и второ, не искам да се налага да инсталирам хиляди други програми на целевите системи.