Я обновил драйвер своей видеокарты для поддержки openGL 4, так что устаревшие функции, такие как glBegin, не будут работать. Однако, когда я запускаю простую программу треугольников, glBegin по-прежнему работает, как раньше. Является ли glBegin все еще поддерживаемым openGL 4 или я пропустил какой-то шаг в обновлении до openGL 4?Confused about openGL version
ответ
Простое использование драйвера, поддерживающего OpenGL 4.x, не означает, что вы потеряете функциональность более ранних версий. Начиная с OpenGL 3.2 концепция Core и Совместимость были представлены профили, и именно здесь вступает в действие разделение между современными и устаревшими.
В профиле Core темы, упомянутые вами как glBegin
, недействительны. Однако в профиле Compatibility вы можете продолжать смешивать устаревшие части API с новыми частями. Подавляющее большинство новых функций OpenGL не гарантируют работу в сочетании с устаревшими частями API, во многом потому, что большинство новых функций связаны с GLSL и программируемым конвейером каким-то образом.
Теперь все становится немного сложнее, когда вы обсуждаете платформу, такую как Mac OS X. Начиная с OS X 10.7, Apple начала поддерживать OpenGL 3.2. Тем не менее, они разработали их реализацию таким образом, чтобы получить доступ к функции OpenGL 3.2 ТОЛЬКО, чтобы получить профиль Core. Они продолжают поддерживать устаревшую реализацию OpenGL 2.1, так что старое программное обеспечение не нужно переписывать, но для того, чтобы использовать любые функции OpenGL 3.2+ в OS X, вы должны указать все устаревшие функции.
На самом деле, платформы, как правило, разработаны таким образом, что вы на самом деле нужно сделать дополнительную работу во время создания контекста для того, чтобы получить сердечника профиль. Если вы специально не запросите Core, вы получите Совместимость (или в случае OS X, реализация OpenGL 2.1). Это способ сделать всю модель устаревания максимально безболезненной для существующего программного обеспечения.
«устаревший» не обязательно означает, что «это не сработает», это означает «вы не должны использовать его, потому что стандарт говорит так», продавец может реализовать то, что он хочет продать с помощью аппаратного обеспечения; и многие бренды по-прежнему предлагают устаревшие контексты и функции OpenGL в своих собственных библиотеках.
- 1. Confused about OSGi version 4.3 и Felix
- 2. Confused about Frustum Culling
- 3. Confused about OpenGL и как это работает
- 4. Confused about memset
- 5. Confused about {version} при определении некоторых пакетов в ASP.NET MVC
- 6. Perl6: Confused about BagHash/Matching
- 7. confused about testing $ prom
- 8. Confused about togglesoftinput function
- 9. Confused about hashes
- 10. Confused about libjpeg: jpeg_read_scanlines
- 11. Confused about stream buffers
- 12. Confused about ASP.NET MVC
- 13. Confused about MSIL
- 14. ReactiveUI - Confused about Routing
- 15. Confused about Linux
- 16. Confused about @Inject
- 17. Confused about libraries
- 18. Confused about Arguments Passing
- 19. Confused about getTag()
- 20. Confused about web fonts
- 21. Confused about функциональные языки
- 22. Confused about ThreadLocal
- 23. Confused About DocumentDB Цена
- 24. Confused about Tkinter bind_class
- 25. Confused about Stripe downgrades
- 26. Confused about Htaccess
- 27. Confused about unistd_XX.h
- 28. Confused about Directory.GetFiles
- 29. confused about macports
- 30. Confused about majorclust algorithm