Я пытаюсь использовать более новую версию OpenGL, чем значение по умолчанию 2.1 на моем mac, используя GLUT_3_2_CORE_PROFILE при инициализации GLUT. Однако это приводит к сбою первой операции OpenGL с неправильной работой. Перед вызовом этой первой функции не сообщалось об ошибке, и не было ошибки, GLUT_3_2_CORE_PROFILE без GLUT_3_2_CORE_PROFILE .

glutInit( glutInitDisplayMode(GLUT_3_2_CORE_PROFILE | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowSize(500, 500); glutCreateWindow(«Demo»); glutDisplayFunc(displayListener); errorCheck(); glMatrixMode(GL_PROJECTION); errorCheck();
Содержимое errorCheck просто:
GLenum error; while ((error = glGetError()))
Согласно названию, ошибка 1282 создается вторым вызовом errorCheck :
OpenGL error 1282: invalid operation

Строка версии представлена как 2.1 ATI-1.51.8 без GLUT_3_2_CORE_PROFILE и 4.1 ATI-1.51.8 с. Требуется ли дополнительная инициализация в этой новой версии OpenGL?

MTCoster 14 янв. 2018, в 13:41
Поделиться

Это потому, что ваша первая операция OpenGL — недопустимая в профилях ядра 3.2 . (Вы знаете, что такое профиль ядра 3.2, или вы просто установили эту опцию, потому что кто-то сказал, что вам следует?)

Ошибки OpenGL 1280 и 1282 в Minecraft

immibis 15 янв. 2018, в 00:36
Я настроил его на игру с новыми функциями шейдеров, так что немного
MTCoster 15 янв. 2018, в 11:05

Поделиться:

1 ответ

Лучший ответ

glMatrixMode является частью устаревшей конвейера с фиксированной функцией и недоступен в основном профиле OpenGL 3.2.

GLUT использует профиль Legacy по умолчанию для всех созданных контекстов OpenGL. Вы должны опустить GLUT_3_2_CORE_PROFILE :

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);

или вам необходимо ограничить функциональность основного профиля.

Подробные спецификации и различия между основным профилем и режимом прямой совместимости можно найти по спецификации OpenGL — реестр Хронос OpenGL

OpenGL версии 3.0 представила идею устаревания функциональности. Многие функции OpenGL объявлены устаревшими, что означает, что пользователям следует избегать их использования, поскольку они могут быть удалены из более поздних версий API. OpenGL 3.1 удалил почти все функции, устаревшие в OpenGL 3.0. Это включает в себя канал с фиксированной функциональностью.

.

Новое расширение, ARB_compatibility, было введено, когда OpenGL 3.1 был обнаружен. Наличие этого расширения является сигналом для пользователя, что устаревшие или удаленные функции по-прежнему доступны через исходные точки входа и перечисления. Поведение таких реализаций определяется с помощью отдельной, гораздо большей, спецификации OpenGL. Таким образом, была спецификация с обратной совместимостью и спецификацией, не поддерживающей обратную совместимость.
Однако, поскольку многие реализации поддерживают устаревшие и удаленные функции в любом случае, некоторые реализации хотят иметь возможность предоставлять пользователям более высокие версии GL доступ к старым API. Было опробовано несколько методов, и оно основано на разделении между контекстами Core и Compatibility.

OpenGL 3.0 был последней версией спецификации, которая полностью поддерживала как фиксированную, так и программируемую функциональность. Тем не менее, большинство аппаратных средств, поскольку поколение OpenGL 2.0 не имело реального оборудования с фиксированной функциональностью. Вместо этого процессы с фиксированной функцией эмулируются с помощью шейдеров, построенных системой.

В OpenGL 3.2 основной профиль не имеет этих концепций с фиксированной функцией. Профиль совместимости поддерживает их. Однако большинство новых функций OpenGL не могут работать с фиксированной функцией, даже если теоретически возможно их взаимодействие.

В 2008 году была выпущена версия 3.0 спецификации OpenGL. С этой ревизией Протокол с фиксированной функциональностью, а также большинство связанных функций и констант OpenGL были объявлены устаревшими. Эти устаревшие элементы и концепции теперь обычно называются устаревшими OpenGL.
Legacy OpenGL по-прежнему поддерживается некоторыми реализациями, поддерживающими основной OpenGL 3.1 или выше и расширение GL_ARB_compatibility. Реализации, которые не раскрывают это расширение, предлагают только функции, определенные в базовой спецификации OpenGL, на которой основана реализация.

Rabbid76 14 янв. 2018, в 11:11
Поделиться

Читайте также:  Кто создал Майнкрафт и сколько ему лет

Ещё вопросы

  • 1 Объединяй две серии в пандах
  • 1 успешно опубликованный Runnable выполняется только тогда, когда родитель недействителен
  • 0 Где я могу вызвать функцию OpenGL initialize () в Win32?
  • 0 Phpmyadmin не работает в xampp
  • 0 Как вызвать функцию модели в кнопке cgridview для свойства visible в yii
  • 1 Доступ к данным LinkedIn через API с использованием Python (и авторизация в целом)
  • 0 Почему моя программа не реагирует ни на какие аргументы?
  • 0 Вызов метода обновления полиморфного контроллера напрямую
  • 0 Импортируйте несколько js-файлов в HTML-код
  • 0 Поддержка нескольких разрешений Изображения в телефоне с разным размером
  • 1 python selenium нажмите на несколько кнопок опроса ошибка
  • 0 PHP запоминает значение параметра url, используя $ _SESSION
  • 0 Как манипулировать данными, возвращаемыми из SQL, с помощью Angularjs
  • 0 Показать / скрыть с тем же ярлыком
  • 0 Как скрыть и показать таблицу в C #?
  • 1 C # непрерывное прослушивание сокета
  • 0 Как отобразить сообщение об ошибке в том месте, где я хочу
  • 0 исправление десятичного формата текстового поля в php
  • 1 Наследование от классов с ** и без ** kwargs
  • 1 Отслеживание библиотек и скриптов, которые использует сайт
  • 0 Обновление столбца SQL с расчетом
  • 1 Найти местоположение индекса первого вхождения определенной частичной строки в кадре данных панд
  • 0 Запись разделов данных в сокет TCP с boost :: asio :: ip :: tcp из streambuf
  • 1 Интервью теста о клозуре в javascript? [Дубликат]
  • 1 NDK: как включить * .so файлы в AndroidStudio
  • 1 Windows Forms: RightToLeft propety
  • 1 Как сериализовать объект, содержащий список объектов?
  • 1 JMM в синхронизированном и нестабильном
  • 1 Android Progress Dialog не отображается
  • 1 Какие различия между компаратором и сопоставимым? [Дубликат]
  • 1 SQL выбирает где, но только проверяет, является ли параметр true
  • 1 как увидеть обработанное изображение без imshow?
  • 0 Как передать аргументы для обещания в AngularJS
  • 1 Как изменить каталог по умолчанию в Node.JS
  • 0 как скачать и сохранить изображение можно получить по ссылке в Facebook в проекте yii
  • 0 MySQL порядок на 2 столбца даты в зависимости от того, что больше
  • 0 Проблемы с массивами и линкером
  • 0 Как динамически манипулировать элементами в HTML
  • 0 Как C ++ найти объявление функции
  • 0 При нажатии кнопки всплывающее окно div должно находиться в центре экрана
  • 0 Хостинг сайта Codeigniter на GoDaddy с общим хостингом
  • 0 Почему мой сплайн-график не отображается при использовании комбинированных графиков?
  • 0 Zend Framework Hosting — не может включать bootstrap.php
  • 0 Ошибка компоновщика из Boost: не удается найти библиотеки для связи с
  • 1 Распознавание активности Android не работает с Nexus 5
  • 0 ВЫБЕРИТЕ DISTINCT на двух столбцах TEXT медленно в MySQL 5.7.20
  • 0 Kendo UI Grid — кнопка в нижнем колонтитуле
  • 1 SQL работает в Access, но не в веб-форме ASP.NET
  • 1 Обнаружение Bluetooth без запроса в Android
  • 1 Как перевести lucene36 в lucene 40
Читайте также:  Как зовут нео Майнкрафт

Источник: overcoder.net

Сбой OpenGL glUseProgram (ошибка 1282 — INVALID_OPERATION)

Прежде чем я начну. Моя шейдерная программа успешно связана, и все связанные модули
успешно скомпилирован.

Итак, у меня есть программа OpenGL с реализацией SDL2 для использования профиля ядра с GL версии 4.0

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4); SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); //. mSimWindow.makeGLContext(); //inlines : mOpenGL = SDL_GL_CreateContext(mWindow); mSimWindow.makeContextCurrent(); //inlines : SDL_GL_MakeCurrent(mWindow, mOpenGL);

На данный момент ошибок нет.

Я использую монолитную вариацию шейдерной программы. У меня есть два класса, чтобы справиться с этим,
Shader и ShaderProgram, где первый используется только последним.

Конструктор ShaderProgram принимает два пути к файлу: для вершинного шейдера и фрагментного шейдера.

Вот соответствующий код из этих классов;

bool Shader::compile() < if (mType == Type::Undefined) return false; mShader = glCreateShader(static_cast(mType)); const GLchar * src = mRaw.c_str(); glShaderSource(mShader, 1, glCompileShader(mShader); GLint success = 0; glGetShaderiv(mShader, GL_COMPILE_STATUS, if (success!=0) < //. some error handling return false; >return true; > bool ShaderProgram::link() < mProgram = glCreateProgram(); glAttachShader(mProgram, mVertexShader->shaderID()); glAttachShader(mProgram, mFragmentShader->shaderID()); glLinkProgram(mProgram); glDetachShader(mProgram, mVertexShader->shaderID()); glDetachShader(mProgram, mFragmentShader->shaderID()); GLint isLinked; glGetProgramiv(mProgram, GL_LINK_STATUS, (int *) return (isLinked==0) ? true : false; >

Вышеуказанное используется так

Graphics::ShaderProgram sp(«.\Shaders\vertex.vert», «.\Shaders\fragment.frag»); //. glClearColor(0.3, 0.3, 0.3, 1); while (!(mSimState == SimulationState::Quiting)) < SDL_PumpEvents(); glClear(GL_COLOR_BUFFER_BIT); sp.use(); mesh.use(); //TwDraw(); mSimWindow.glSwap(); >
void ShaderProgram::use()

в итоге получается 1282 (INVALID_OPERATION)

Если в любой момент до glUseProgram (..) я вызываю glGetError (), он возвращает 0. Так что проблема как-то связана с этим вызовом. Причуда, которую я не очень понимаю, это то, что если я подпишу программу, то немного
ему как-то удастся его визуализировать, просто не используя мой шейдер.

введите описание изображения здесь

Пример.

Я довольно смущен, любая помощь или совет будут оценены.

Читайте также:  Как сделать эндер чест в Майнкрафт

Как продолжение. По какой-то причине я думал, что 0 было правдой, вздох. Использование GL_TRUE (1) заставило мой код обработки ошибок фактически показать мне ошибку.

Я сделал ту же ошибку, что и этот парень, когда читал шейдер: проблема компиляции шейдера glsl во время выполнения

std :: getline не вставляет символ новой строки, поэтому источник читается как одна строка; что, конечно, не действует.

Источник: web-answers.ru

Что делать ошибка opengl в майнкрафте

Помогите с проблемой. Установлен лицензионный майнкрафт на компьютер с видеокартой RADEON 9200 PRO Family. На неё поставлен последний существующий драйвер аж 2008 года выпуска. При первом запуске игра успешно обновилась после чего выдала сообщение :

Minecraft was unable to start because it failed to find an accelerated OpenGL mode.
This can usually be fixed by updating the video card drivers.

— BEGIN ERROR REPORT 7fe0271 ———
Generated 07.03.11 14:29

Minecraft: Minecraft Beta 1.3_01
OS: Windows XP (x86) version 5.1
Java: 1.6.0_24, Sun Microsystems Inc.
VM: Java HotSpot™ Client VM (mixed mode), Sun Microsystems Inc.
LWJGL: 2.4.2
[failed to get system properties (java.lang.NullPointerException)]

org.lwjgl.LWJGLException: Pixel format not accelerated
at org.lwjgl.opengl.WindowsPeerInfo.nChoosePixelFormat(Native Method)
at org.lwjgl.opengl.WindowsPeerInfo.choosePixelFormat(WindowsPeerInfo.java:52)
at org.lwjgl.opengl.WindowsDisplay.createWindow(WindowsDisplay.java:185)
at org.lwjgl.opengl.Display.createWindow(Display.java:311)
at org.lwjgl.opengl.Display.create(Display.java:856)
at org.lwjgl.opengl.Display.create(Display.java:784)
at org.lwjgl.opengl.Display.create(Display.java:765)
at net.minecraft.client.Minecraft.a(SourceFile:260)
at net.minecraft.client.Minecraft.run(SourceFile:632)
at java.lang.Thread.run(Unknown Source)
— END ERROR REPORT 592c6b95 ———-

И выводит его постоянно, даже при попытке поиграть в браузере на официальном сайте. Как известно точно игра идёт и на более поздних моделях видеокарт этого поколения, потому предполагаю что проблема в настройках. Помогите если знаете чем помочь! Операционная система компьютера Windows XP. Java стоит.

Заранее спасибо за любую информацию по данной проблеме.

Существует несколько методов, способных устранить сложившуюся проблемы. Причем они не зависят от того, вылетела игра или нет. Подробно ознакомиться с ними можно ниже.

Настройки графики в Minecraft

Просмотр используемой видеокарты

Обратите внимание, что для скачивания драйверов рекомендуется использовать только официальные сайты!

  • Линейный вид
  • Комбинированный вид
  • Древовидный вид

В данной теме представлены инструкции по исправлению ошибок, связанных с OpenGL

Ошибки 1286 и 1282
Следуем инструкции ниже:
1.Зайдите в папку с игрой и перейдите в сборку сервера, на котором вы получаете данные ошибки.

К примеру возьмём сборку Classic.Путь будет выглядеть так — Том(С/D):Users(Имя Пользователя)AppDataRoaming.minecra ftonlyClassic

Последний раз редактировалось cheald; 28.06.2018 в 08:28 .

Источник: minecraft-kak.ru