Проверил - действительно. Похоже эта штука просто перестала работать.
Ну ладно, фиг с ней. Она в основном нужна, чтобы сменить GL_FILL на GL_LINE. А эта опция прекрасно работает.
Цитата:
Polygon Stipple - PolygonStipple and Enable/Disable target POLYGON_-STIPPLE, and all associated state.
Не юзал и не юзаю.
Цитата:
Pixel transfer modes and operations - all pixel transfer modes, including pixel maps, shift and bias, color table lookup, color matrix, and convolution commands and state, and all associated state and commands defining that state.
Не юзал. Это что-то из времён OpenGL 1.0
Цитата:
Pixel drawing -DrawPixels and PixelZoom. However, the language describing pixel rectangles in section 3.7 is retained as it is required for TexImage* andReadPixels
Не юзал.
Цитата:
Bitmaps -Bitmap and the BITMAP external format
Даже не знал что OpenGL в такое умел.
Цитата:
Legacy OpenGL 1.0 pixel formats - the values 1, 2, 3, and 4 are no longer accepted as internal formats by TexImage* or any other command taking an internal format argument. The initial internal format of a texel array isRGBA instead of 1.TEXTURE_COMPONENTS is deprecated; always use TEXTURE_INTERNAL_FORMAT.
Не юзал, но рискну предположить - это было влияние Кармака. Аналогично и с номерами активных текстур для мультитекстурирования.
Там тоже можно было просто циферки задавать от ноля.
Цитата:
Legacy pixel formats - all ALPHA, LUMINANCE, LUMINANCE_ALPHA, and INTENSITY external and internal formats, including compressed, floating-point, and integer variants; all references to luminance and intensity formats elsewhere in the specification, including conversion to and from those formats; and all associated state. including state describing the allocation or format of luminance and intensity texture or framebuffer components
Вот этого вот вообще не понял. А что плохого в таких форматах?
У меня загрузчик текстур по возможности сохраняет в эти форматы просто ради экономии видеопамяти. Ну если уж текстура чёрнобелая, зачем её хранить в RGBA? То-то и оно, что незачем.
Цитата:
Depth texture mode - DEPTH_TEXTURE_MODE. Section 3.8.16 is to be changed so that r is returned to texture samplers directly, and the OpenGLShading Language 1.30 Specification is to be changed so that(r,r,r,1) is always returned from depth texture samplers in this case.
Это напрямую относится к предидущему кейсу. Т.к. DEPTH_TEXTURE_MODE мог быть либо LUMINANCE либо INTENSITY. Мне-то в целом пофиг, т.к. я не понял зачем эти режимы вообще нужны. Ну видимо и правда незачем, раз выбросили.
Добавлено 17-03-2025 в 17:35:
Продолжим. Переделал все текстурные форматы с GL_LUMINANCE и GL_LUMINANCE_ALPHA на GL_R и GL_RG соответственно. Потребовалось скопировать альфу в зелёный канал и настроить свиззлинг естественно.
Опять же то что раньше было в драйвере теперь вручную делается.
Цитата:
Texture wrap mode CLAMP - CLAMP is no longer accepted as a value of texture parameters TEXTURE_WRAP_S, TEXTURE_WRAP_T, or TEXTURE_ - WRAP_R.
Ну тут понятно. Старый GL_CLAMP выбросили, а GL_CLAMP_TO_EDGE, который ранее был доступен в качестве расширения теперь вошёл в ядро и должен использоваться по умолчанию вместо GL_CLAMP.
Добавлено 17-03-2025 в 17:48:
Цитата:
Texture borders - the border value to TexImage* must always be zero, or an INVALID_VALUE error is generated (section 3.8.3); all language in section 3.8 referring to nonzero border widths during texture image specification and texture sampling; and all associated state.
Ну тут аналогично, GL_CLAMP_TO_BORDER теперь в ядре, правда смутил тот факт, что бордюр должен быть непременно заполнен нулевыми значениями.
Спрашивается, тогда зачем вообще передавать переменную? Впрочем, насколько я помню, эти бордюры мне были нужны только для того, чтобы сделать "фонарик из паранои" на фиксированном конвейере, а так-то они больше ни для чего были не нужны. Так что некритично. Занулил бордюр, да и всё.
Цитата:
Automatic mipmap generation -TexParameter* target GENERATE_-MIPMAP, and all associated state.
Эту фичу я выбросил из нового ксаша ещё в 2019-м. Теперь всё только вручную.
Цитата:
Fixed-function fragment processing -AreTexturesResident, PrioritizeTextures, and TexParameter target TEXTURE_PRIORITY; TexEnv target TEXTURE_ENV, and all associated parameters; TexEnv target TEXTURE_-FILTER_CONTROL, and parameter name TEXTURE_LOD_BIAS; Enable targets of all dimensionalities (TEXTURE_1D, TEXTURE_2D, TEXTURE_3D, TEXTURE_1D_ARRAY, TEXTURE_2D_ARRAY, and TEXTURE_CUBE_MAP); Enable target COLOR_SUM; Enable target FOG, Fog, and all associated parameters; the implementation-dependent values MAX_TEXTURE_UNITS and MAX_TEXTURE_COORDS; and all associated state.
Выброшено. Осталось выбросить lodbias. Ну да дело нехитрое.
Добавлено 17-03-2025 в 18:00:
Цитата:
Alpha test -AlphaFunc and Enable/Disable target ALPHA_TEST, and allassociated state.
Вот это вот единственный случай, когда на свой страх и риск выбрасывать не буду. Я привык к альфа-тесту, он очень удобный, постараюсь этот функционал сохранить. Посмотрим что из этого получится. Там дело в том, что он у меня привязан к условиям в материале, чего не получится сделать другим способом. Не то чтобы это было прямо так уж принципиально, но с другой стороны я не видел ситуации чтобы альфа-тест где-то не работал.
Хотя это возможно потому что я ещё не переключался в кор-профиль или не переходил на версию шейдеров 1.3? Увидим. Пока что я проигнорирую это.
Цитата:
Accumulation buffers -ClearAccum, and ACCUM_BUFFER_BIT is not valid as a bit in the argument to Clear(section 4.2.3); Accum; the ACCUM_*_-BITS framebuffer state describing the size of accumulation buffer components; and all associated state. Window system-binding APIs such as GLX and WGL may choose to either not expose window configs containing accumulation buffers, or to ignore accumulation buffers when the default framebuffer bound to a GL context contains them.
Аккумуляторы я никогда и не юзал. Но BUzer в параное помнится делал на них моушен блюр вроде как. Ну сейчас это на шейдерах делается.
Цитата:
Pixel copying -CopyPixels (the comments also applying to CopyTexImage will be moved to section 3.8.4).
Не юзал.
Цитата:
Auxiliary color buffers, including AUXi targets of the default framebuffer.
Не юзал.
Цитата:
Context framebuffer size queries -RED_BITS, GREEN_BITS, BLUE_BITS, ALPHA_BITS, DEPTH_BITS, and STENCIL_BITS.
Не юзал.
Цитата:
Evaluators -Map*, EvalCoord*, MapGrid*, EvalMesh*, EvalPoint*, and all evaluator map enables, and all associated state.
Не юзал.
Добавлено 17-03-2025 в 18:13:
Цитата:
Selection and feedback modes -RenderMode, InitNames, PopName, PushName, LoadName, and SelectBuffer; FeedbackBuffer and PassThrough; and all associated state.
Не юзал и не знаю зачем оно нужно.
Цитата:
Display lists -NewList, EndList, CallList, CallLists, ListBase, GenLists, IsList, and DeleteLists; all references to display lists and behavior when compiling commands into display lists else where in the specification; and all associated state.
Не юзал, но когда-то очень давно мне BUzer про них рассказывал, что они ну прямо ппц какие быстрые, то есть быстрее всего. В любом случае это уже устарело.
Цитата:
Hints - the PERSPECTIVE_CORRECTION_HINT, POINT_SMOOTH_HINT, FOG_HINT, and GENERATE_MIPMAP_HINT targets to Hint(section 5.4).
Я юзаю только GL_LINE_SMOOTH_HINT, но его в этом списке нет.
Цитата:
Attribute stacks -PushAttrib, PushClientAttrib, PopAttrib, Pop- ClientAttrib, the MAX_ATTRIB_STACK_DEPTH, MAX_CLIENT_ATTRIB_-STACK_DEPTH, ATTRIB_STACK_DEPTH, and CLIENT_ATTRIB_STACK_-DEPTH state, the client and server attribute stacks, and the values ALL_-ATTRIB_BITS and CLIENT_ALL_ATTRIB_BITS.
В старом ксаше ещё немного юзал, в новом уже нет.
Добавлено 17-03-2025 в 18:19:
Цитата:
Token names and queries - all token names and queries not otherwise mentioned above for deprecated state, as well as all query entry points where all valid targets of that query are deprecated state (chapter 6 and the state tables)
Надеюсь мне debug output выдаст те места, которые больше использовать нельзя, хотя, следуя документу я вроде бы и так от них избавился. Ну а если нет - пусть драйвер ругается.
Цитата:
Unified extension string -EXTENSIONS target to GetString
Вот тут вообще не понял. Очевидно, что старая строка расширений больше неактуальна. Но что юзать вместо неё в этом разделе документа не сообщается. После всех изменений расширений, которые юзает Ксаш осталось мало совсем - ну может штук семь от силы. Из которых два расширения - это поддержка бинарных шейдеров (кэш) и пресловутый debug output. А остальные не требуют никаких функций, ну всякие там анизотропные фильтрации и бесшовные кубемапы, типа такого.
Подводя итоги можно сказать, что мой конвейер практически готов к переходу на новую версию OpenGL, осталось только шейдеры переписать, ну и при инициализации сконфигурировать драйвер. А потом по результатам тестирования обновить утилитку reqtest.