Доброе всем!
Прочтя статью про DLL на ProgZ, решил сделать интерфейс для OpenGL 2.X для фортрана 90/95.
Как я понял, нужна DLL от NVIDIA или ATI, которая реализует функциональность OpenGL соответсвующей версии + нужен LIB файл для загрузки (явной, неявной или отложенной) функций из DLL в программу на фортране.
Вопрос 1: правильно ли я понимаю, что надо будет делать две версии для ATI и для NVIDIA, или там все же есть какая-то унификация?
Вопрос 2: откуда достаь вышеописанный LIB ?
Вопрос 3: как быть с "правовой стороной дела". могут ли быть осложнения с распространением этих заголовков под каким-то лицензиями (в том числе и открытыми) в дальнейшем?
1. OpenGL - это набор функций. Все hardware vendors (nVidia, ATI и т.д.) просто реализуют спецификацию. Под виндовсом есть просто библиотека opengl32.dll, к которой и надо линковаться.
2. В фортране, насколько я помню, динамическая линковка различна в зависимости от компилятора. Так что тут уж надо просто в документации рыться. Вряд ли есть такой lib файл, хотя для opengl 1.1 я что-то видел.
3. Вряд ли будут какие-то проблемы
Вопрос 4, от меня: а зачем это на Фортране ? Ведь если так уж приспичило что-то визуализировать, то можно весь код визуализации писать на С/C++, потом сделать простенькую обёртку и уже её использовать из Фортрана.
Vinil
1. Ну, во первых, в составе Intel Fortran уже есть обертка для opengl32.dll. Но там только функциональность OpenGL 1.1. Вот и хочется сделать поддержку OpenGL 2.X
4. Ну я как бы учусь... Пока запал в одном месте горит, хочется поиграть. Потом за словами "простенькую обертку" у меня лично ничего не скрывается. Если ты укажешь пару статей, где об этом рассказано, то я буду очень благодарен.
Ну и как бы, в паре мест я читал, что изначально бибилиотека писалась именно для фортрана. Это будет в некотором роде, восстановление исторической справедливости. Да и потом, фортран для геометрических операций с его встроенной векторной арифметикой во сто крат удобнее чем c/c++ с кучей самопальных математических библиотек, но на вкус и цвет фломастеры, как мы все знаем...
фортран не нужен.
Mega
ТроЛлей не кормим.
Mega
> фортран не нужен.
Mega не нужен.
Cpt. Gav
Функционал OpenGL вяжется на контекст котовый создается через opengl32.dll, так что если есть обертка над opengl32.dll то вполне можно использовать функционал opengl32.dll 2.х и opengl32.dll 3.х если контест OpenGL поддерживает данный функционал проверяется это динамически.
PS. Такое ощющение что вы не совсем понимаете что вообще хотите сделать.
"Обёртка". Допустим, есть у тебя массивчик (ну давай утрировать, нету нифига даже в 95-ом кроме массивов ;) ), который ты хочешь нарисовать как вертекс эррэй. Так напиши на C функцию RenderVtxArray(array_element* array) и заэкспортируй её в фортран (хоть статически, хоть через dll). И так для любого функционала, который тебе может понадобиться.
Я хоть и пользовался фортраном (для числогрызных задач, естественно), но не думаю, что так уж важно делать всё исключительно на одном языке. Сейчас достаточно средств для разработки на нескольких языках сразу (DLL - один из них).
Наконец, если хочешь автоматом получать фортрановскую оболочку для opengl, попробуй попросить Executor'а в ветке OpenGL header generator, чтобы он генератор расширил до написания fortran-модулей.
Vinil
Звучит разумно.
Просто, как водится, есть монстр на Фортране, который и знать незнает, что он - консольное однонитевое приложение Win32. К нему надо визуализатор прикрутить. Вот я и подумал, что лучше на фортране написать код GUI с выводом OpenGL.
Программа моя была такова
Т.е. по тупому вместо Program ... end Program пишем WinMain. подключаем консоль. Перефигачиваем все write(*,) на write(0,), чтобы вывод был не в дескриптор -1, а в 0 -- т.е. в созданную консольку.
Затем заводим нить, которая исполняет то, что раньше было в Program end Program - т.е. собственно расчет. А в основной нитке крутим цикл сообщений + выводим графику.
Т.е. настройку графики надо производить из Фортраноского кода, так почему бы это не сделать фортрановскими средствами, вместо подключения кусков на других языках написанных.
Ну, просто я еще мало опыта имею по скрещиванию кода на разных языках.
Тема в архиве.