VisualC + OpenGL how to

4 отговора 109 прегледа
#1

VisualC + OpenGL how to

Zdravei,
edno neshto otdavna ne moga da obiasnia dobre, shte sym blagodaren ako niakoi mi obiasni:
Kakvo to4no triabva da se napravi, za da mojesh da napishesh programa na VisulaC(da re4em 6), taka 4e tia da polzva vyzmojnostite na videokartata za 3D grafika(OpenGL)? Moje bi da link-nesh sys opengl32.lib ot VisluaC, no pyk nali iskame da polzvame funkciite, koito ni predostavia nai-novia draiver na videokartata(primerno NVIDIA)? Kakvo instalira draivera na edna videokarta, za da moje da se polzva toi ot tvoiata programa? Kak moje da kajesh, 4e iskash da polzvash nego? Nai-obshto, kak mojesh s VisulaC da se vyzpolzvash maksimalno ot vyzmojnostite na videokartata na PC-to?
Vyprosite sa mnogo i obyrkani, no mnogo shte se radvam ako niakoi e uspial da razbere kakvo iskam da popitam i otgovori..... Tova shte mi donese mnogo spokoini noshti ;)
Blagodaria predvaritelno.

Hristo

Отговор
в отговор на hristo #2

Re: Разширения

Има функции с които изброяваш , поддържаните от картата разширения.Луда работа!!!

Отговор
в отговор на hristo #3

Re: VisualC + OpenGL how to

въпроса, който повдигаш в интересен поради една основна причина (според мен): като пишем opengl-ски код, в повечето случаи ползваме функции, които са най-голямото общо кратно от функциите, които са на разположение с различните видео карти, т.е. това е Стандарта, Спецификацията - примерно с VC++6 версията на opengl-a е 1.1, което вече си е старо....

така...стигаме до момента с т.нар. extesnions на OpenGL...това са функции, които са надстройка, разширение на стандарта, това са функции, които може да достъпиш като за всяка конкретна функция, която ти трябва и знаеш, че конкретна карта ти я поддържа, теглиш си хедъра с extension-ите на съответната компания (nVidia, ATi и т.н), и в хедъра намираш декларации на function-pointer-ите за всяка функция...

това, което възниква като един доста голям според мен проблем е лошата структура на кода, който ще трябва да се изпълнява на различни карти - extension-ите, които ползваш в кода ти трябва да ги проверяваш на база на гореспоменатите function-pointer-и дали за текущата карта ти връщат валидна фунkция(по-точно валиден адрес на функция, който опитваш да получиш с GetProcAddress() ). по този начин човек се обвързва с хардуерно зависими неща, което при сложен софтуер сбозава нещата...

лично моето мнение е, че относно тези най-яки възможностти на видеокартите и тяхното използване много по-добър подход има DirectX API. при него има емулиращ слой, който обработва командите от код, който като функционалност не се поддържа от картата, а в случай, че се поддържа - прй сърце ! т.е. основния мотив при дизайна на DirectX, в частност DirectDraw като rendering API е хардуерно независим код, което в момента не може да се постигне с OpenGL, освен ако не ползваш това, което е по стандарт. Според някои публикации следващия голям ъпгрейд на OpenGL (вероятно ще се прескочи направо на 2.0) ще бъде с архитектура и идеология като на DirectX - хардуерно независим код.

това е засега, дано съм бил полезен

най-често умните хора са и лоши

Редактирано от vroom на

Отговор
в отговор на vroom #4

малко уточнение

значи кода под DirectX не е съвсем независим от картата. например ако картата ти не потдържа енвайрънмент мапинг, то код който го използва просто не работи. няма да имаш софтуерна емулация, която да те спаси. ако обаче инициализираш със софтуерен рендер, то ще се спасиш, но всичко ще е софтуерно. поне моят опит такива резултати е давал де.

Отговор
в отговор на zaphod #5

Re: малко уточнение

да, за такива случаи си абсолютно прав

аз исках да наблегна на цялостната архитектура и идеята за хардуерно независимия код, друг е въпроса, че не могат да се избегнат в една или друга степен неудобствата при липса на един или друг feature в картата...

в крайна сметка ако имаше такова rendering API, при това мощно, широко (или не чак толкова) разпространено, с безплатно SDK, което да поддържа на 100 % концепциите за хардуерната независимост, е тогава ЕВАЛА !!! ама засега няма...така, че от тия го почвам тоя DirectX 9, че даже и нова карта си купих заради него

най-често умните хора са и лоши
Отговор