ПрограммированиеФорумОбщее

Хочу сделать интерфейс базовой функциональности OGL 2.X для FORTRAN 90/95

#0
0:34, 28 июля 2009

Доброе всем!

Прочтя статью про DLL на ProgZ, решил сделать интерфейс для OpenGL 2.X для фортрана 90/95.
Как я понял, нужна DLL от NVIDIA или ATI, которая реализует функциональность OpenGL соответсвующей версии + нужен LIB файл для загрузки (явной, неявной или отложенной) функций из DLL в программу на фортране.
Вопрос 1: правильно ли я понимаю, что надо будет делать две версии для ATI и для NVIDIA, или там все же есть какая-то унификация?
Вопрос 2: откуда достаь вышеописанный LIB ?
Вопрос 3: как быть с "правовой стороной дела". могут ли быть осложнения с распространением этих заголовков под каким-то лицензиями (в том числе и открытыми) в дальнейшем?

#1
0:49, 28 июля 2009

1. OpenGL - это набор функций. Все hardware vendors (nVidia, ATI и т.д.) просто реализуют спецификацию. Под виндовсом есть просто библиотека opengl32.dll, к которой и надо линковаться.
2. В фортране, насколько я помню, динамическая линковка различна в зависимости от компилятора. Так что тут уж надо просто в документации рыться. Вряд ли есть такой lib файл, хотя для opengl 1.1 я что-то видел.
3. Вряд ли будут какие-то проблемы

Вопрос 4, от меня: а зачем это на Фортране ? Ведь если так уж приспичило что-то визуализировать, то можно весь код визуализации писать на С/C++, потом сделать простенькую обёртку и уже её использовать из Фортрана.

#2
8:10, 28 июля 2009

Vinil
1. Ну, во первых, в составе Intel Fortran уже есть обертка для opengl32.dll. Но там только функциональность OpenGL 1.1. Вот и хочется сделать поддержку OpenGL 2.X

4. Ну я как бы учусь... Пока запал в одном месте горит, хочется поиграть. Потом за словами "простенькую обертку" у меня лично ничего не скрывается. Если ты укажешь пару статей, где об этом рассказано, то я буду очень благодарен.

Ну и как бы, в паре мест я читал, что изначально бибилиотека писалась именно для фортрана. Это будет в некотором роде, восстановление исторической справедливости. Да и потом, фортран для геометрических операций с его встроенной векторной арифметикой во сто крат удобнее чем c/c++ с кучей самопальных математических библиотек, но на вкус и цвет фломастеры, как мы все знаем...

#3
8:41, 28 июля 2009

фортран не нужен.

#4
8:53, 28 июля 2009

Mega
ТроЛлей не кормим.

#5
10:23, 28 июля 2009

Mega
> фортран не нужен.

Mega не нужен.

#6
11:34, 28 июля 2009

Cpt. Gav
Функционал OpenGL вяжется на контекст котовый создается через opengl32.dll, так что если есть обертка над opengl32.dll то вполне можно использовать функционал opengl32.dll 2.х и opengl32.dll 3.х если контест OpenGL поддерживает данный функционал проверяется это динамически.

PS. Такое ощющение что вы не совсем понимаете что вообще хотите сделать.

#7
23:46, 28 июля 2009

"Обёртка". Допустим, есть у тебя массивчик (ну давай утрировать, нету нифига даже в 95-ом кроме массивов ;)  ), который ты хочешь нарисовать как вертекс эррэй. Так напиши на C функцию RenderVtxArray(array_element* array) и заэкспортируй её в фортран (хоть статически, хоть через dll). И так для любого функционала, который тебе может понадобиться.

Я хоть и пользовался фортраном (для числогрызных задач, естественно), но не думаю, что так уж важно делать всё исключительно на одном языке. Сейчас достаточно средств для разработки на нескольких языках сразу (DLL - один из них).

Наконец, если хочешь автоматом получать фортрановскую оболочку для opengl, попробуй попросить Executor'а в ветке OpenGL header generator, чтобы он генератор расширил до написания fortran-модулей.

#8
8:25, 29 июля 2009

Vinil
Звучит разумно.
Просто, как водится, есть монстр на Фортране, который и знать незнает, что он - консольное однонитевое приложение Win32. К нему надо визуализатор прикрутить. Вот я и подумал, что лучше на фортране написать код GUI с выводом OpenGL.
Программа моя была такова
Т.е. по тупому вместо Program ... end Program пишем WinMain. подключаем консоль. Перефигачиваем все write(*,) на write(0,), чтобы вывод был не в дескриптор -1, а в 0 -- т.е. в созданную консольку.
Затем заводим нить,  которая исполняет то, что раньше было в Program end Program - т.е. собственно расчет. А в основной нитке крутим цикл сообщений  + выводим графику.
Т.е. настройку графики надо производить из Фортраноского кода, так почему бы это не сделать фортрановскими средствами, вместо подключения кусков на других языках написанных.

Ну, просто я еще мало опыта имею по скрещиванию кода на разных языках.

ПрограммированиеФорумОбщее

Тема в архиве.