Я тут немного вспомнил. В функцию glVertexXX() передаются не нормализированные координаты текстуры, а абсолютные координаты в мире. То есть, то место, куда должна быть натянута текстура. А так как шрифт выводится в ортогональной проекции, то эти координаты ограничиваются размером нашего окна.
Но тогда получается, что это в Delphi всё работает неправильно.
Никаких DLL не использую. В линкере прописана опция -lopengl32 (или opengl32.lib для вижуалки). Я хз, где он ее берёт. Наверное, какая-то стандартная виндовая DLL’ка.
Delphi is already shipping with an OpenGL header, but that header is outdated and also buggy . Therefore we urge everyone to NOT use that header, especially as it lacks most of OpenGL’s current functionality.
Типа что данная обёртка устраняет эти баги?
И подключив ее, можно так же вызывать низкоуровневые функции напрямую, без обёрточных? И тогда багов не будет?
А opengl32.dll Delphi откуда берёт?
А то что писал выше. Delphi своеобразная среда, это не MVS.
замечание - команды и функции OpenGL имеют префикс gl для размещенных в библиотеке opengl32.dll и glu для размещенных в библиотеке glu32.dll. Прототипы этих функций находятся в модуле opengl.pas. Функции OpenGL, имеющие отношение только к реализации OpenGL под Windows, имеют префикс wgl, как, например, wglCreateContext, а некоторые вообще не имеют префикса, например, SwapBuffers. Их прототипы описаны в модуле windows.pas.
glu32.dll
логично было-бы брать из …\Windows\System32
Но так как есть отличие в префиксах вызова функций, то нужно разбираться что на самом деле происходит при тех или иных префиксах.
Какие отличия? Написано ж просто, что у функций из разных библиотек разные префиксы.
На всякий случай. На самом деле совпадающих имен конечно мало или вообще нет. Нет никаких gluVertex2f, Vertex2f, только glVertex2f.
какого смещения и из какого примера?
У меня есть другой проект, где одни и те же формулы работают по-разному в С++ и Delphi. Коллизия 2D-шариков визуально сильно отличается. Формулы отскока писал, конечно же, не я и там могут быть ошибки. Но формулы-то одни и те же, а поведение шариков заметно разное. Там, конечно, надо всё еще раз перепроверить
Отталкиваюсь от тех фрагментов кода что в первом посте.
Формулы расчета схожи но не идентичны.
Вот к примеру даже взять функцию glTranslatef. В cpp коде в конце каждой итерации делаете сдвих по X на значение 10, а уже в pas коде сдвиг выполняется на значение 0,0625.
И выше, циклы в обоих фрагментах кода производят расчет не одинаково. Т. е. вычисления не идентичны. Посмотрите сами, внимательно.