Прежде всего OpenGL не какой-то централизованно управляемая библиотека и реализация (в отличие от DirectX), поэтому вы не можете скачать SDK, потому что это не работает OpenGL. OpenGL - это всего лишь куча документов, которые описывают API, который предоставляют драйверы, и программы могут использовать. Однако фактическая реализация API работает в контексте операционной системы. И это немного затрудняет работу, если вы хотите, чтобы ваш API был независим от ОС. DirectX легко справляется, потому что он предназначен только для одной конкретной ОС. Эта ОС - Windows, и это означает, что DirectX может быть написан против частей базовой ОС. Это делает разработку SDK управляемой.
Итак, что же делает OpenGL? Ну, это требует, чтобы какая-то часть ОС была настолько щедра и делала ее доступной для программы. В самой простой форме (и в ретроспективе это было бы лучшим вариантом, потому что это спасло бы столько вопросов, как ваше), этот интерфейс обеспечил бы одну функцию: GetProcAddress
.Для каждой функции, найденной в спецификации OpenGL, вы могли бы получить указатель на фактическую вещь в вашем драйвере OpenGL с помощью этой функции. Но, ленив, как и большинство программистов, они проделали легкий путь и сказали: «Ну что ж, текущая спецификация OpenGL в версии 1.1, как насчет того, что мы открываем все OpenGL-1.1 на поверхности интерфейсной библиотеки. И все, что приходит после мы выставляем через расширения, которые должны быть загружены GetProcAddress
, ведь сколько новых функций будет ... ». Оказывается: много.
В любом случае, каждый компилятор, предлагающий поддержку ОС, должен предоставлять интерфейсные библиотеки для каждого API, к которому поставляется ОС. Для Windows это OpenGL-1.1. Если вам нужна фактическая ошибка в библиотеке интерфейса OpenGL, это будет означать обновление ОС. Но это не так отличается от DirectX, где новые версии DirectX поставляются с обновлениями ОС. Просто Microsoft не видит причины поддерживать OpenGL. Таким образом, OpenGL-1.1 - это то, что видно на поверхности, и нам приходится иметь дело с этим. И поскольку он включен в то, что компиляторы поставляют, нет никаких причин для предоставления фактического SDK для загрузки, потому что все необходимое уже есть прямо на вашей установке компилятора.
Хорошо, так как получить эти функции от позже версии OpenGL? Хорошо: GetProcAddress
. Это официальный способ сделать это. И поскольку фактические данные зависят от ОС, о которой идет речь, но OpenGL не зависит от ОС, просто не может быть окончательный OpenGL SDK. Так официально, что вы должны сделать, это:
- Скачать OpenGL заголовки для более поздних версий от http://opengl.org/registry
- Для каждой функции, которую вы хотите использовать определить переменную указатель на функцию, чтобы держать его
- нагрузки указатель на функцию, используя
GetProcAddress
Конечно, если вы просто хотите использовать современный OpenGL, это довольно утомительно. Поэтому некоторые люди разработали сторонние инструменты, которые делают для вас этот поступок. И для всего, что касается вас как программиста, эти инструменты очень похожи на SDK. Самый популярный выбор до сих пор (но, к сожалению, он не полностью безаварийный, в связи с кровоточащим краем OpenGL) является GLEW. Использование GLEW довольно просто. Я рекомендую использовать его статически связаны между собой:
- Скачать GLEW от http://glew.sourceforge.net
- Место glew.c и glew.h вместе с вашими исходными проектами файлов.
- Добавьте glew.c в список скомпилированных источников; убедитесь, что определение макроса препроцессора
GLEW_STATIC
настроено в глобальные флаги компилятора ваших проектов.
- Использование
#include "glew.h"
вместо #include <GL/gl.h>
- Сразу после вы создали окно OpenGL в вашей программе вызова
glewInit()
Теперь несколько советов: Вы действительно должны научиться чтения документации (не только обезжиренное его). Все то, что я только что написал, указано в тех ссылках, которые вы указали.
«* вам не разрешено загружать SDK *« Это потому, что это не SDK. Они называют это «SDK», потому что они хотели присоединить людей к мысли, что OpenGL имеет реальный, официально поддерживаемый SDK. Это просто (плохо обновленный) захват-библиотеки библиотек, на которые ссылается веб-сайт. Страница «Начало работы» в вики объясняет, как это работает.Если вы хотите, чтобы приложения OpenGL работали в чужой системе, тогда * они * также должны были установить последние драйверы. Но это верно для любого графического приложения. –
Вот что я пытаюсь понять. Что мне нужно для установки и #include, чтобы использовать OpenGL в актуальном состоянии? Где я могу получить opengl32.lib? Где я узнаю, какие файлы заголовков мне понадобятся, и где я их получу? Если у него нет SDK, как мы даже знаем, какие функции в нем и что они делают? – ExOttoyuhr
«SDK» - просто причудливое имя для «библиотеки». «Где я могу получить opengl32.lib? *» На странице «Начало работы» было очень ясно: «Visual Studio и большинство компиляторов Windows поставляются с этой библиотекой». Это было предложение * после того, которое говорило вам, чтобы он ссылался на него. И часть под названием «Получение функций» объясняет ситуацию с заголовком. Пожалуйста, * прочитайте * страницы, с которыми вы связались; не просто сканировать их на определенные термины или искать «загрузить это». На самом деле пройдите и поймите, что он говорит. –